zoukankan      html  css  js  c++  java
  • Java基础知识学习(四)

    高级特性:内部类、抽象类

    内部类(Inner Class),有时也称为嵌套类(Nested Class)

    允许在一个类(或方法、语句块)的内部定义另一个类

    使用内部类的主要原因有:

    内部类可以访问外部类中的数据,包括私有的数据。外部类不能访问内部类的变量

    内部类可以对同一个包中的其他类隐藏起来。

    当想要定义一个回调函数且不想编写大量代码时,使用匿名(anonymous)内部类比较便捷。

    减少类的命名冲突。

    public class Outer {
    	private int size;
    
    	public class Inner {
    		private int counter = 10;
    		public void doStuff() {
    			size++;
    		}
    	}
    
    	public static void main(String[] args) {
    		Outer outer = new Outer();
    		Inner inner = outer.new Inner();
    		inner.doStuff();
    	}
    }
    

    编译,会生成两个 .class 文件:Outer.class 和 Outer$Inner.class

    *必须先有外部类的对象才能生成内部类的对象,因为内部类需要访问外部类中的成员变量,成员变量必须实例化才有意义。

    不建议使用内部类,破坏代码结构,使用意义不大

    static可以修饰内部类,相当于外部类的static成员,直接创建

    局部内部类,定义在代码块中的类。它们只在定义它们的代码块中是可见的。

    匿名内部类,匿名类必须继承一个父类或实现一个接口。

    不使用匿名内部类来实现抽象方法:

    abstract class Person {
        public abstract void eat();
    }
    class Child extends Person {
        public void eat() {
            System.out.println("eat something");
        }
    }
    
    public static void main(String[] args) {
    		Person p = new Child();
                    p.eat();
    }    
    

      

    引入了匿名内部类。

    abstract class Person {
            public abstract void eat();
    }

    public static void main(String[] args) { new Person() {   public void eat() {     System.out.println("eat something");  }     }.eat();
    }

      

    抽象类

    这种只给出方法定义而不具体实现的方法被称为抽象方法,抽象方法是没有方法体的,在代码的表达上就是没有“{}”。包含一个或多个抽象方法的类也必须被声明为抽象类

    使用 abstract 修饰符来表示抽象方法和抽象类。

    抽象类除了包含抽象方法外,还可以包含具体的变量和具体的方法。类即使不包含抽象方法,也可以被声明为抽象类,防止被实例化

    抽象类不能被实例化,抽象方法必须在子类中被实现。

    abstract class People{
        // 抽象方法
        public abstract void work();
    }
    
    class Teacher extends People{
        // 必须实现该方法
        public void work(){
            //TO DO
        }
    }
    
    

      

    高级特性还包含接口和泛型

  • 相关阅读:
    jQuery中删除方法empty(),remove()和detach()的区别
    怎么设置font awesome图标的大小?
    什么是回调函数?
    MIP开发教程(三) 使用MIPCLI工具调试组件
    MIP开发教程(一) MIPCLI工具安装与环境部署
    MIP 2016年终总结
    MIP开发教程(二) 使用MIPCLI工具调试MIP网页
    VIP站长大会(北京站)常见问题解答
    MIP开发常见问题解答
    CMS模板应用调研问卷
  • 原文地址:https://www.cnblogs.com/alex09/p/4883477.html
Copyright © 2011-2022 走看看