zoukankan      html  css  js  c++  java
  • Java面向对象编程(二)

    上一篇博文里总结了面向对象三大特性在Java中的体现。如今谈一谈Java中的抽象类,接口,内部类等特性。

    一. 抽象类

    public abstract class Shape {
    	public int shapeID = 0;
    	public abstract double getArea();
    }
    1. Java中同意类、接口或成员方法具有抽象属性,而不同意成员域或构造方法具有抽象属性。

    2. 类修饰词中含有abstract的类具有抽象属性,称为抽象类;接口总是具有抽象属性。

    3. 假设成员方法的修饰词中含有abstract。则该成员方法具有抽象属性,称为抽象方法。抽象方法仅仅能在抽象类或接口中定义。而抽象类中一般有至少一个抽象方法,所以整体上来讲。含有抽象方法的类叫做抽象类。
    4. 抽象方法不含方法体。格式例如以下:
      [方法修饰词列表] 返回类型 方法名(參数列表);
    5. 抽象类能够具有构造方法。但不能直接生成实例,必须通过非抽象子类生成实例。

    6. 假设抽象类的子类不是抽象类,则要求在子类的定义中必须覆盖父类(抽象类)的全部抽象方法。

    二. 接口

    Java不同意一个子类拥有多个直接父类,但同意一个类实现多个接口。接口定义的格式为:
    [接口修饰词列表] interface 接口名 [extends 接口名列表] { 接口体 }
    public interface Shape {
    	public static final double PI = 3.14159;
    	public abstract double getArea();
    }
    1. 外部接口和外部类一样,一般都不具有protected和private属性
    2. 接口本身具有抽象属性。所以abstract修饰词是不必要的。

    3. 接口体内部不含构造方法,不能直接通过接口生成实例对象
    4. 接口的全部成员域都具有public、static和final属性;接口的全部成员方法都具有public和abstract属性
    5. 若实现接口的类不是抽象类。则须要在该类的类体中定义覆盖该接口中的全部成员方法。

    三. 内部类

    实名内部类

    1. 实名内部类的封装性修饰词添加了protected和private。

      能够依据情况选择。

    2. 对于不具有静态属性的实名内部类,假设它的成员域具有静态属性,则必须同一时候具有final属性;不具有静态属性的实名内部类不能含有具有静态属性的方法。

    3. 实名内部类实例对象的创建方法
      * 静态实名内部类的实例对象:
      new 外部类名.实名内部类名(參数列表)
      *
      不具有静态属性的实名内部类的实例对象:
      外部类表达式.new 实名内部类名(參数列表)

    匿名内部类

    匿名内部类不具有类名,不能具有抽象和静态属性,而且不能派生出子类。匿名内部类的定义格式是:
    new 父类型名(參数列表) { 类体 }

    举个样例比較easy理解:
    abstract class ClassA {
    	int data;
    	public ClassA (int i) { data = i; }
    	public abstract void method();
    }
    
    public class ClassB {
    	public static void main(String[] args) {
    		ClassA a = new ClassA(3) {
    			public void method() {
    				System.out.println(data);
    			}
    		};
    		
    		a.method();
    	}
    }

    四. final 修饰词

    1. 具有final属性的的类不能派生子类
    2. 假设成员域具有final属性。则不能被子类的成员域所覆盖,且在赋值后不能被改变。假设成员域同一时候具有final和static属性,则其仅仅能在定义时赋值;假设成员域仅仅具有final属性。不具有static属性。则仅仅能在定义时或构造方法中赋值。
    3. 假设一个类的成员方法具有final属性。则其不能被当前类的子类的成员方法覆盖。

    五. static 修饰词

    除内部类外,类一般不具有static属性。static的内部类的原因和特性还须要进一步学习。

    六. Misc

    abstract, static, final是三个经常使用修饰词。

    这三个修饰词中仅仅有static和final两个修饰词能够组合在一起。

  • 相关阅读:
    上标<sup>与下标<sub>
    Java7基础教程 Jay Bryant著 李鹏 韩智译
    Error:Could not find com.android.tools.build:gradle:2.14.1.
    nginx-rtmp-module安装笔记
    Page Scroll using Selenium WebDriver
    个人家庭宽带搭建多域名web网站服务器配置
    phpmyadmin mysql Access denied for user 'root'@'localhost'问题解决
    sizeWithFont 取消后
    根据size截取图片中间矩形区域的图片 这里的size是正方形
    给UIImageView添加点击事件
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6782654.html
Copyright © 2011-2022 走看看