美文网首页
java三大特性

java三大特性

作者: 谢审言_shen | 来源:发表于2016-06-04 13:19 被阅读0次

继承性

  • extends继承 Java支持单继承,子类得到父类的成员变量和成员方法,(但不包括静态方法和构造方法)。

在子类的构造函数中必须用super()调用父类的构造方法

关联:函数的复写(override),覆盖。Super()与this的用法。

  • abstract抽象 抽象类中可有抽象函数和成员函数,抽象类天生做爹的,即为可被继承的类。

  • 抽象类&抽象函数

1.抽象类不能生成对象。

2.抽象类中可以没有抽象函数。

3.抽象类中的构造函数在子类中用super()调用。

4.抽象函数必须声明在抽象类中。

5.抽象函数abstract void fun(); 只有函数定义无方法体,如在子类中没有进行复写(override),会进行报错。

为什么使用抽象类?
如果一段代码在语义上有错误,那么在语法上也应该是有错误的。(在努力实现的)。

  • interface& implements接口就是定义了一种标准,体现了面向对象的精髓是面向对象的核心。
    1.定义了接口就是定义了调用对象的标准。
    2.接口是一种特殊的抽象类,所有的方法均默认为public,且均为抽象方法。
    3.接口支持多继承,一个类可以实现多个接口。Eg:interface A{…} interface B{…} class implements A, B{…}

设计模式之工厂方法模式

有两个子类HPPrinter&CannonPrinter继承接口Printer。在test类中实现那个打印机。

 class test{
  public static void main(String args[]){
       Printer printer = null;
       int flag = 1;
       if(flag == 0){
             printer = new HPPrinter();
       }
       else if(flag == 1){
             printer = new CannonPrinter();
       }
       printer.open();
       printer.print("test");
       printer.close();
  }
}

问:若新增一个同方打印机,在test类中需重新增加循环语句,将同方类的对象赋值给Printer的引用printer。重复代码过多,如何解决???
//主要代码功能:根据用户选择(根据用户选择是参数)生成打印机的对象,并向上转型为打印机类型(类型为打印机类型)。
//printer getPrinter(int flag);

  class PrintFactory{
  public static printer getPrinter(int flag){
       Printer printer = null;
       int flag = 1;
       if(flag == 0){
             printer = new HPPrinter();
       }
       else if(flag == 1){
             printer = new CannonPrinter();
       }
       return printer;
  }
}

生成HP Cannon两个类的对象时,不是直接new()而是把生成这两个对象的代码直接封装在PrintFactory类中的getPrinter()方法中,当我们使用时直接在test类中直接调用getPrinter();

public static void main(String args[]){
       int flag = 1;
       Printer printer = PrintFactory.getPrinter(flag);
       printer.open();
       printer.close();
       }

封装性

  • 包与访问权限
    打包package com.baidu
    导入包 import java.io.*
private(私有) 本类
default(默认) 本类 当前包中
protect(只能修饰成员变量和成员函数) 本类 当前包 其他包类(只有两个类有extends关系时,允许跨包访问)
public 本类 当前包 其他包子类 所有类
  • 修饰符为public时,类名与源文件必须同名。

  • 如果子类&父类不在同一包中,则不可以继承其default权限下的成员变量和成员函数。


多态性

  • 对象的转型[多态性的一种体现]

1.对象的向上转型:将子类对象赋值给父类的引用
Student S = new Student(); Person P = S;
也可写为:Person P = new Student();
一个引用能调用那些成员变量和成员方法,取决于引用的类型。
一个引用具体调用哪个成员方法,取决于引用所指的对象
2.对象的向下转型:父类对象赋值给子类的引用
Person P = new Person(); Student S =(Student)P;

联想:强制类型转换


end

相关文章

网友评论

      本文标题:java三大特性

      本文链接:https://www.haomeiwen.com/subject/myvqdttx.html