this和super注意
注意:访问构造方法时,不可同时出现super和this
解答:super和this必须都放在第一行,会冲突。
this关键字
this核心是指向“成员”,有三种用法
本类方法中,访问本类成员属性
本类方法中,访问本类其他成员方法
本类方法中,访问本类其他构造方法
public class HelloWorld {
int a = 2;
public void run(){
System.out.println("呵呵");
}
}
class zi {
int a = 1;
public void run2(){
System.out.println("呵呵");
}
public void run(){
int a = 2;
//1、指向本类成员变量
System.out.println(this.a);
//2、指向本类其他成员方法
this.run2();
}
//3、指向本类其他构造方法
public zi(){
this(123);
}
public zi(int a){
}
}
super关键字
super核心是指向“父类”,有三种用法
1、子类方法中,访问父类属性
2、子类方法中,访问父类普通方法
3、子类方法中,访问父类构造方法
public class HelloWorld {
int a = 2;
public void run(){
System.out.println("呵呵");
}
}
//子类
class zi extends HelloWorld{
int a = 1;
//子类方法中
public void run(){
//1、调用父类属性
System.out.println(super.a);
//2、调用父类普通方法
super.run();
}
//3、调用父类构造方法
public zi(){
super();
}
}
instanceof关键字
用在多态,判断是否可以向下转型
Animal animal = new Dog();
if(animal instanceof Dog){
Dog dog = (Dog)animal;
dog.eat();
}
final关键字
final修饰变量,其值不能改变
final修饰的类,不能被继承
final修饰的方法,不能被重写覆盖
static关键字
static第一个功能,本类共享
static第二个功能,跳过实例化,直接类名调用
注意:
1、static不能和this使用
解答:static修饰的是类区域,属于所有对象;this修饰的是具体的对象
2、静态代码块,只加载一次,比构造方法先执行
3、static修饰的方法,不能被重写
解答:重写是为了实现多态,如果重写static方法,那么父类引用调用的依然是父类
的static方法,而没有调用子类的static方法,失去多态的特性
public class HelloWorld {
public static void main(String[] args) {
//共享
Student s1 = new Student("张三",12);
System.out.println("姓名:"+s1.getName()
+"年龄:"+s1.getAge()+"地址:"+Student.address);
Student s2 = new Student("李四",23);
System.out.println("姓名:"+s2.getName()
+"年龄:"+s2.getAge()+"地址:"+Student.address);
}
}
class Student{
private String name;
private int age;
static String address = "中国";
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
网友评论