引用变量 instanceof 类名
Person p = new Student();
boolean b = p instance of Student;
//在继承中使用,有继承关系
向上转型;Person p = new Student();student类转为Person类
若父类没有的方法,创建的对形象不能调用该方法
继承中,在测试类的多态调用只能调用父类和子类共有的功能,
若想调用子类特有的功能,需要使用强转功能
构造方法
public 类名(参数列表){}
构造方法在new的时候就执行,终生只执行一次,在新new一个,在执行一次,但只是伴随着new执行,相当于来了两个人,但并不是同一个人
构造方法写与不写都有,只要是类,就会有一个构造方法,new对象时,调用的就是类中的空构造方法,如果自己在类中定义了有参数的 ,在测试类中调用就需要吧有参数的构造方法,吧值附入 Person p = new Person("张三",20);
person(string name,int age)
{
this.name = name;
this.age = age;
} //带有this.的为成员变量。不带this.的为局部变量,吧栈内存中赋值传入堆内存里的person 中的局部变量
构造方法不是自己调用,而是在new 构造方法的时候,由对象自己调用
构造重载的调用。看传递参数对应的形式
1. this. 可以再构造方法之间调用
2. this. 区分局部变量和成员变量的同名情况
3. this. 在构造方法间调用,语法this() //调用啦有参数的构造方法,调用的是本类的构造方法,可以传递进入 this(“李四”,20);this();需要放在构造方法的第一行(构造方法重载时的用法)
super
子类的构造方法第一行有隐式代码:super();目的是调用父类的构造方法
父类中定义了有参构造函数,子类中定义构造函数,需要使用super()
传递和父类同类型的参数
super this 在构造方法都是在第一行,但二中在构造方法中只能选一个,保证子类能调用到父类的构造方法就行
所有的类都有隐式的构造方法,而所有的构造方法都有一个隐式的super();除了全部类的父类object ,它有构造方法,构造方法没有super();
父类的私有成员,子类无法调用父类的成员变量,但是父类可以创建get/set,子类可以用get/set调用父类的私有成员变量
子类写构造方法时,若父类的变量为私有变量且父类的构造器为有参构造器,则子类的构造器也为有参构造器,传参的条件为父类的变量属性,且super()也要写上传递的参数,也可为父类的私有变量;
final
继承的出现虽然解决啦很多问题,但也出现啦很多不可控因素,为此出现final,final的类为最终的类,也就是不能被继承,也可修饰方法和变量,但继承的子类只能用父类最终方法,但不能被重写。
final 修饰的变量虽然不能改变,但可以做运算操作
final int a = 10;
a += 1;
也可以修饰引用变量:final A a = new A();
field java中这英文值得是成员变量。
final 修饰的成员变量需要赋值,不然出错,可以直接赋值,或者用构造方法也可以赋值
static:
static 实现数据的共享
静态中不能调用非静态
int age;
String name;
public static void funcation(){
syytem.out.println(name+age);
} // 此程序错误 ,原因生命周期不同,
静态方法不允许用this super
多态调用中,编译看谁,运行看谁:
编译都看 = 左边的父类,父类有编译成功,父类没有编译失败
运行,静态方法,运行父类中的静态方法
运行,非静态方法,运行子类的重写方法
成员变量,编译运行全是子类