总结
java 构造器,构造方法,new对象
构造器快捷键:alt+insert
首先创建一个Pet类,因为类是抽象的,需要实例化,所以在main方法里面实例化一个类,
实例化以后会创建这个类的对象,即Pet dog = new Pet(); 而且一旦new了一个对象,
会默认调用无参构造器,构造器的名称和这个类的名称是一样的,
即 public Pet (){},创建一个类一般会写他的属性和方法,
然后就可以在main方法里面的通过创建的对象来调用类里面的属性和方法。
封装:就是为了防止数据被直接访问,所以设置了接口,通过操作接口来访问,
即get/set,set一般可以做数据的安全防护。
快捷键:alt+insert 直接右键选择generation
创建get,set 和construct
继承 extend 快捷键查看继承关系:ctrl+H
方法的重写:快捷键ctrl+O
重写只是方法的重写,属性没有重写
方法的重写和重载不同,重写是子类重写了父类的方法,注意重写只能和非静态的有关,
和静态的无关,而且重写是public,不能是private。子类想改写父类中的方法,就需要重写。
重写是方法名和参数都相同,而重载是方法名相同,但是参数不同。子类的方法和父类
必须一致,而且子类要有继承父类,方法体不同。
重写:父类的功能,子类不一定需要,或者不一定满足,另外修饰符:范围可以
扩大但是不能缩小,如:public>Protected>Default>private,抛出异常:范
围可以被缩小,但是不能被扩大,ClassNotFoundException--->Execption(大)
多态:
1.多态是方法的多态,属性没有多态
2.父类和子类,有联系(继承) 类型转换异常! classCastException
3.存在条件:继承关系,方法需要重写,父类引用指向子类对象 Father f1 = new son();
有些方法不能重写(也就没有多态):1.static 方法,属于列,他不属于实列 2.final 3.private方法
一个对象的实际类型是确定的,如new Student();new Person();可以指向的引用
类型就不确定,父类的引用指向子类
子类重写了父类的方法,则执行之类的方法
对象能执行哪些方法,主要看左边的类型,和右边关系不大 s2.eat();执行不了,
因为左边即Person没有这个方法,只看左边,子类重写了父类的方法,执行子类的方法
子类可以直接调用父类中的方法,这叫继承Student 能调用的方法都
是自己的或者继承父类的 ,Person父类型,可以指向子类,
即 Person s3 = new Student();,但是不能调用子类独有的方法,
要调用只能强制转换如下: ((Student) s2).eat();
static 如果有static 就是静态的,可以直接使用,如果没有就是非静态,
要调用使用时就要先new一个对象才能调用它。静态的方法和属性是类加
载的时候就已经生成了,可以直接使用,静态方法只能调用静态方法,
而非静态方法可以调用静态方法和非静态方法。
抽象类:抽象类里面可以写抽象方法和普通方法,抽象方法一定在抽象
类里面,1.抽象类,不能new这个抽象类,只能靠子类去实现它;约束。
抽象方法,只有方法名字,没有方法的实现 。//抽象类的所有方法,继
承了它的子类,都必须要实现它的方法,除非子类也是抽象类。抽象类是不能new的
接口:
作用;
1.约束
2.定义一些方法,让不同的人实现
3.public abstract
4.public static final
5.接口不能被实例化,即不能new,接口中没有构造方法
6.implements可以实现多个接口
7.必须要重写接口中的方法
异常:快捷键:ctrl + alt +t
列编辑,列选中快捷键:alt+鼠标选择
继承了接口,就要重写接口中所有的方法,继承了一个抽象类,也要重写里面所有抽象的方法,
不是抽象的方法可以不用重写。如果子类也是抽象类,那就可以不用,
继承一个普通类,可以重写里面的方法,也可以不重写
重点:抽象类是不能实例化的,也就是不能new,所以一般会用一个子类去继承它,
然后实例化这个子类,在通过这个子类去调用父类也就是这个抽象类中的方法。
写的时候是 Father f1 = new son();