这个地方没讲完啊啊啊啊 啊
这个地方没讲完啊啊啊啊 啊
泛型怎么改善工厂的啊啊啊啊_(:3」∠)_
没有任何栈内存所指向的堆内存空间称之为垃圾空间,所有的垃圾将被GC(Garbage Collestor,垃圾收集器)定期进行回收并释放无用内存空间,但是如果垃圾过多,一定将影响到GC的处理性能,从而影响到程序的整体性能。
一个栈内存只能保存一个堆内存的地址
构造方法:如果在构造方法上使用了void,那么此结构就与普通方法结构完全相同,编译器会认为它是一个普通方法。
普通方法与构造方法最大的区别:构造方法在类对象实例化的时候调用,普通方法在实例化后调用的。
构造方法和setter的区别:构造方法在对象实例化的时候为属性设置内容(初始化),而setter不仅可以以设置属性内容,也可以修改属性内容。
匿名对象:该对象没有任何的引用;即没有栈内存,在使用一次后变为垃圾。
abstract class Message {
private String type;
public abstract String getConnectInfo();
public void setType(){
this.type = type ;
}
public String getType() {
return this.type;
}
}
class DatabaseMessage extends Message{
public String getConnectInfo() {
return "数据库连接信息";
}
}
public class Test {
public static void main(String[] args) {
DatabaseMessage msg =new DatabaseMessage();
msg.getConnectInfo();
System.out.println(msg.getConnectInfo());
}
}
子类很少会继承一个完善的类,在以后父类的设计中,要优先考虑的一定是一个抽像类。
而抽象类是不能实例化的。
要使用抽象类必须有:
1 抽象类必须有子类,子类使用一个extends继承抽象类
2 抽象类的子类不是抽象类,一定要复写抽象类中的全部抽象方法
3 抽象类的对象实例化可以利用对象多态性通过子类向上转型完成
构造方法:this();
普通方法:this.method();
构造方法重载:
public Person(String name){
this.name=name;
}
public Person(String name;int age){
this(name);
this.age=age;
}
构造器不能递归调用
sattic:
属性:公共类属性
方法:
构造代码块:写在类中
构造快优先于构造方法,在每一次实例化时调用
这一节讲的太精彩了,我们学校里老师根本不会讲的那么清晰明了啊!
静态代码块:static{ }
实例化时最先执行
只执行一次
为初始化静态域
在主类中:
静态代码块优先于主方法执行。
数组的动态初始化:
int[] a = new int[10];
数据内容为数据类型的默认值。
数组的静态初始化:
int[] a = {1, 2, 3};
int[] a = new int[] {1, 2, 3};
数组数据的使用:
x = a[1];
数组从0开始;
数组长度 a.length
多态性是面向对象中的第三大主要特征 ,多态性在继承性的基础之上扩展出来的概念,也就是说可以实现父子类之间的互相转换处理。
多态性的基本概念
在JAVA之中对于多态性有两种实现的模式:
方法的多态性:
- 方法的重载:同一个方法名称可以根据传入的参数的类型或个数的不同实现不同功能的执行
- 方法的覆写:同一个方法可能根据使用子类的不同有不同的实现
对象的多态性:
父子实例之间的转换处理,它有两种模式:
- 对象向上转型:父类 父类实例 = 子类实例、自动完成转换
- 对象向下转型: 子类 子类实例 = (子类)父类实例、强制完成转换。
从实际的转型处理来讲,大部分情况下考虑最多的一定是对象的向上转型(90%)、对于对象的向下转型往往都在使用子类的特殊功能(子类可以对父类进行功能扩充)的时候要采用向下转型(3%),还有一些时候是不会考虑转型的(String类、7%)
抽象类:模板结构设计。
1对子类方法统一管理;
2可以自身提供普通方法可以调用抽象方法(必须在子类提供实现的时候才会生效)
字符串直接赋值,会先在字符串常量池里面进行判断。是否已存在该字符串对象,有则用,无则建。
利用构造方式创建字符串,会生成两个实例化对象,并且不会自动入池。可以利用intern()函数入池。
static修饰的属性和方法属于类,用了它相当于升权了。
子类中覆写方法优先调用,如果必须使用父类方法,则用super.connect()方法。
public > default (不写)> private
父类方法权限必须小于子类方法权限;
重载(Overloading):1方法名称相同,参数类型个数不同2没有权限限制3范围:发生在一个类中
覆写(Override):1方法名称相同,参数类型个数相同2被覆写方法不能拥有更严格的权限3发生在继承关系类之中
final :终结器
1不能被继承的类
2不能被覆写的方法、常量。
3定义常量
全局常量:
public static final int ON = 1;
100课时有亮点