课堂总结4(关键字要点总结)
super:
super()表示调用父类中的构造方法;
- 在子类继承父类时,super()在子类的构造方法位于第一行(系统会默认加上)
- 假如子类第一行有this关键字,那么super()会被挤掉,是其不会发挥作用(即不会调用父类的构造方法)
- 格式:
super.method()
.
- 实例
public class Animal {
public String name;
public String getName(){
return this.name;}
public void setName(String name){
this.name=name;
}
}
public class Cat extends Animal{
private String name;
public Cat(String name1,String name2){
super.name=name1;
this.name=name2;
}
public String toString(){
return "我是"+super.name+"名叫"+this.name;
}
}
public class Test {
public static void main(String[] args){
Cat aa=new Cat("猫猫","小黑");
System.out.println(aa);
}
}
- 输出结果:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jCQlbOwh-1650297771770)([(4条消息)] 课堂总结4图1_Re:Life的博客-CSDN博客)
- 分析:
上述代码中,super.name
调用了父类中的name,使其得到的name的值赋给了name1,子类中的name用this调用,此时super没有被挤掉,可以正常调用。By the way,类中有一定的结构,如其基本结构是:1.成员变量,2.构造方法,3.普通方法,4.内部类。不能直接使用语句,如System.out.println()
语句。
Final:
final不仅可以用来修饰数据,还可以修饰方法和类。
- 当其修饰数据时(包括成员变量/属性和局部变量),这个变量的值被赋一次值后不能被改变。于成员变量来说,必须在声明时或者构造方法中对其赋值。final修饰成员变量/属性的时候,必须是显示的一次赋值(包括引用类型)。ps:在其生存期内值不变。例:
final Dog aa = new Dog()
,其修饰的是aa这个变量,所以aa只能被赋值一次。 - 当final用来修饰类时,该类不能被继承
- 当final修饰方法时,这个方法无法被重写
- 若final修饰的引用类型,那么引用类型地址不变,若其内部值没有被final修饰,则这个值不会变。
-
final修饰class实例代码:
final public class Animal {} public class Cat extends Animal{} public class Test { public static void main(String[] args){ final int i=20; System.out.println(i); } }
-
显示效果
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Oj7m9K8-1650297771772)([(4条消息)] 课堂总结4图2_Re:Life的博客-CSDN博客)
-
final修饰method实例代码:
public class Animal { private String name; public final void feed(){} } public class Cat extends Animal{ private String name; public void feed(){ System.out.println("cat eat fish"); } } public class Test { public static void main(String[] args){ Cat aa = new Cat(); aa.feed(); } }
-
显示效果:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SNKOdbXk-1650297771773)([(4条消息)] 课堂总结4图3_Re:Life的博客-CSDN博客)
- 分析:
课堂总结4图3_Re:Life的博客-CSDN博客](https://blog.csdn.net/m0_67219881/article/details/124262763))
- 分析:
上述代码中,final修饰的class是不能被继承的,所以在debug是会报error,运行也会输出错误提示。再者,final修饰的method是不能被重写(override)的。补充:static final
一般用于常量定义。