类和对象
-
构造器
-
默认构造器和类的名称相同,且没有任何参数和返回值
-
调用new方法的本质是调用构造器
-
类默认有一个无参构造
-
当类中有有参构造时,无参构造必须显式定义
-
static修饰符
static在对象实例化之前就存在
类的static方法之间可以互相调用
类的static方法可以直接通过类名.方法名调用,无static修饰符的方法只能先实例化对象之后才能调用
- 默认初始化
数字:0,0.0
char:u0000
引用:null
boolean: false
封装
-
高内聚,低耦合
-
属性私有
继承
public class student extends person{
//student类 继承person类
}
- 子类可以继承父类的public方法,private无法被继承
//ctrl+h 查看“族谱”
-
所有的类都直接或间接继承自object类
-
java中类只能有单继承,不能多继承
super关键字
super();//调用父类无参构造
-
子类构造时,会默认先调用父类的无参构造
-
调用父类的构造器必须要在子类构造器的第一行
-
必须只能出现在子类的方法或者构造方法之中
-
super和this不能同时调用构造方法
super / this 对比
- 代表对象不同:
this:本身调用者这个对象
super:代表父类对象的应用
- 前提
this:没有继承也可以使用
super:只能在继承条件才可以使用
-
构造方法
this();//调用本类的构造
super();//调用父类的构造
方法重写
public class A extends B{
}
-
方法名必须相同
-
参数列表必须相同
-
修饰符:范围可以扩大,但不能缩小
-
抛出的异常:范围可以缩小,但不能扩大
-
static 方法属于类,不属于实例,不能重写
-
final 常量,不能重写
-
private 不能重写
多态
-
可拓展性
-
子类重写了父类的方法,执行子类的方法
-
父类只能通过强制转换调用子类单独拥有的方法
-
子类能调用的方法是自己的或者继承父类的方法
-
父类的引用指向儿子的对象
instance of
//判断一个对象是什么类型
//Object>String
//Object>person>student
//同级才能比较
package object;
public class demo01 {
public static void main(String[] args) {
student s1=new student();
person s2=new student();
s1.run();
s2.run();
Object object=new student();
System.out.println(object instanceof student);
System.out.println(object instanceof person);
System.out.println(object instanceof Object);
System.out.println(object instanceof String);
person person=new persaon();
System.out.println(person instanceof String);//报错
}
}
//输出结果
/*run by student
run by student
true
true
true
false*/
强制转化
-
低类型转高类型不需要强制转换
-
高类型转低类型需要强制转换
-
父>子