final关键字和内部类的使用举例

//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();
    }

}
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值