一、类与对象的创建
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。