//public final class Animal {//用final修饰的Animal类不可能有子类,不能被继承
public class Animal {
private String name;
private int age;
private String color;
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;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
//final标识的方法时最终方法,不能被重写@override
// public final void intro() {
// System.out.println("大家好我是动物,又到了春季");
// }
public void intro() {
System.out.println("大家好我是动物,又到了春季");
}
}
-----------------------------------------------------------------------------------------------
//当Animal类加上final时,Cat不能继承,报错The type Cat cannot subclass the final class Animal
public class Cat extends Animal {
private int id;
//当Animal中的intro方法加上final时,报错Cannot override the final method from Animal
@Override
public void intro() {
/*// TODO Auto-generated method stub默认调父类的方法输出为"大家好我是动物,又到了春季"
super.intro();*/
System.out.println("我是一只猫咪");//输出为"我是一只猫咪"
Inner in = new Inner();//在外层类的方法中使用该内部类的对象
}
//定义在Cat类内部的类的好处
//1、 类中private属性可以被访问,如private int id;该属性就能被Inner()类使用
public class Inner{
public void test() {
System.out.println(id);
}
}
public static void main(String[] args) {
Inner in = new Cat().new Inner();//在外部通过new Cat().new Inner();方法拿到内部类
in.test();
}
}
-----------------------------------------------------------------------------
import shangke.day12.Cat.Inner;
public class TestFinal {
//在javazhong 使用关键字final修饰的变量,就是常量,程序运行时不能改变
public int num = 10;
/*//public int num = 10;输出为10
public static void main(String[] args) {
TestFinal t =new TestFinal();
System.out.println(t.num);
}*/
/*//public static int num = 10;静态方法可直接访问静态属性,输出为10
public static void main(String[] args) {
num +=10;
System.out.println(num);
}*/
/*//public final static int NUM = 10;常量用大写字母表示
public static void main(String[] args) {
NUM += NUM;//一旦属性时final则报错The final field TestFinal.num cannot be assigned
System.out.println();
}*/
public static void main(String[] args) {
/*Cat c = new Cat();
c.intro();
Inner in = new Cat().new Inner();//在外部通过new Cat().new Inner();方法拿到内部类
in.test();*/
//把cat类的父类animal接受收了Cat对象,调的还是Cat
Animal an =new Cat();
an.intro();
}
}