一、类与对象的创建
1.使用new关键字创建对象
Person person = new Person("Jingjing");
类的创建:
对象创建:
二、构造器详解
一个类即使什么也不写,也会存在一个构造方法
即便前面的类是空的,仍然可以使用new方法创建一个对象
1.无参构造器和有参构造器
2.快捷方法
alt + insert :生成有参构造
alt +insert +seleteNone(弹出的中间):生成无参构造
三、封装
1.属性私有
2.getset
在main方法中直接调用输出
3.封装的意义:
1.提高程序的安全性,保护数据
2.隐藏代码的实现细节
3.统一接口
4.提高系统可维护性
4.快捷键
alt+insert:可生成getset方法
四、继承 --extends
Java中只有单继承,没有多继承,但支持多重继承
1.分为两个类:子类和父类-----子类继承父类
子类继承了父类就会拥有父类的全部方法
2.父类的类型:
public 公开的
private 私有的--这种类型子类不能直接继承,但可以通过方法调用继承
default 默认
protected 保护继承
父类写了有参构造,子类的无参构造无法继承,只能去调用父类的无参
3.在java中,所有的类都直接或间接继承object类
查看类继承快捷键:F4
打不开的可以 点击标题栏中的Navigate-->Type Hierarchy4.yinca
4.隐藏代码--Student student1 = new Student1 :输出时会调用父类的无参构造
方法继承例子:
五、super详解
super注意点:
1.super调用父类的构造方法,必须要在子类构造方法的第一行,否则报错
2.super 必须只能出现在子类的方法或者构造方法中
3.super和this不能同时调用构造方法
Vs this:
代表的对象不同
this:本身调用者这个对象
super:代表父类对对象的应用
前提:
this:没有继承也可以使用
super:只能在继承条件下才可以使用
构造方法:
this(); 本类的构造
super(); 父类的构造
六、方法重写
重写:需要有继承关系,子类重写父类的方法
1.方法名必须相同
2.参数列表必须相同
3.修饰符:范围可以扩大但不能缩小 public>protected>default>private
4.抛出的异常:范围可以被缩小但不能扩大
重写:子类和父类的方法一致,方法体不同!
为什么要重写:
1.父类的功能,子类不一定需要,或者不一定满足
alt+insert :override
七、多态
/**多态注意事项
* 1.多态是方法的多态,属性没有多态
* 2.父类和子类,有类型转换异常 ClassCastException
* 3.存在条件:继承关系,方法需要重写,父类引用指向子类对象
不能进行多态的方法:
1.static 方法:属于类,不属于实例
2.final 常量
3.private方法
因为他们无法进行重写
八、、instanceof和类型转换
1.instanceof ---要看他们的继承关系(存在true,不存在flase)
同级比较会报错
/** System.out.println(X instanceof Y);是否可以进行编译
* 要看他们之间有无父子关系,没有就会报错 */
2.类型转换
转换小结:
1.父类引用指向子类的对象 Person person = student;
2.把子类转换为父类,向上转换
3.把父类转换为子类,向下转型,强制转换
4.方便方法的调用,减少重复代码
九、static关键字详解
1.private static int age; //静态变量
private double score; //非静态变量
2.//非静态方法
public void run(){
go();//非静态方法可以调用静态方法里面的内容}
//静态方法
public static void go()
{}
----静态方法可以直接调用,也可以类调用
go();
Student.go();
//run();//不能调用普通方法
3.如果类被final定义了,就不能被继承了
4.代码块与构造方法
5.静态导入包
十、抽象类---类是单继承的
抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。
抽象类可以有构造方法,只是不能直接创建抽象类的实例对象,在继承了抽象类的子类中通过super()或super(参数列表)调用抽象类中的构造方法。
十一、接口的定义与实现
interface--接口
接口作用:
1.约束
2.定义一些方法,让不同的人实现
3.抽象类 public abstract
4.常量 public static final
5.接口不能被实例化(new),接口中没有构造方法
6.implements可以实现多个接口
十二、内部类
一个类中只有有一个public class,但是可以有无数个class。