java的三大特性

来源:互联网 发布:结构优化设计 编辑:程序博客网 时间:2024/05/20 07:38

java的三大特性

     一、封装

  • 对象的全部属性和全部方法结合在一起,形成一个不可分割的独立单位
  • 尽可能隐藏对象的内部结构
  • public class Singleton {
    //私有的静态属性,持有唯一的一个实例
    private static Singleton instance = new Singleton();

    //私有构造方法,不给别人机会创建实例
    private Singleton(){}

    //公开的静态方法,唯一的得到实例的方式
    public static Singleton getInstance(){
    //通过给静态的属性赋值,控制只有一个实例
    return instance;
    }

    “`
    }

  • 具体表现:
    • 属性使用private权限
    • 方法使用public权限
    • public class Animal{
      private String name;
      public String getName (){
      return name;
      }
      public void setName(String name) {
      this.name = name;
      }
      }

    二、继承

  • 概念:继承是指一个类的定义可以基于另外一个已经存在的类,即子类基于父类,从而实现父类代码的重用,子类能吸收已有类的数据属性和行为,并能扩展新的能力。
  • 继承的形式:【访问权限修饰符】【修饰符】子类名 extends 父类名{子类体}
    public class Animal(){
        public void bark(){
       }
    }
    public class Cat extends Animal(){
       public void bark(){}
    }

    • 一个类只能继承一个类

      • 关联:B类作为A类的属性的类型,has-a
      • 依赖:B类作为A类的方法参数的类型,use-a
      • 继承:B类继承A类,A类称为B类的父类,B类自动拥有A类的 方法,is-a

        • 实现

        • super关键字
          1.父类对象的属性
          2.父类对象的方法
          3.父类对象的构造器
          4.权限允许

        • 方法覆盖
          1.同名
          2.同参
          3.同返回值
          4.不可以缩小范围
        • final
          1.属性:当创建的时候必须赋初值,之后不可以更改值。
          2.方法:final方法不可以被子类复写
          3.final的类不可被继承
        • 抽象类
          1.不可被实例化
          2.可以定义方法,方法用abstract修饰,不能实现。
          3.子类继承抽象类必须有实现其抽象方法
          4.含有抽象方法的类,必须是抽象类
    • 一个接口能继承多个接口

    • public interface SeaAnimal{
      void swim);
      }
      public interface LandAnimal{
      void go();
      }
      public interface Horse extends SeaAnimal,LandAnimal{

      }

    • 一个类能继承多个接口

public interface Drive {
boolean drive(String tool);
}
public interface Fly {
boolean fly(int high);
}
- public class Car implements Drive,Fly{
public boolean drive(String tool){
System.out.println(“开车”+tool);
return true;
}
public boolean fly(int high){
System.out.println(“多高”+high);
return true;
}
}

  • 类继承与接口继承的差异
    1.java类可以一次继承多个接口,用implements 接口1,接口2。
    2.接口继承接口可以不实现父接口中的方法,可以声明自己的新方法
    3.类实现了一个接口A,如果B是A的父接口,且B中有抽象方法,则该类必须实现A和B中的所有抽象方法
    4.抽象类实现接口,可以不实现接口中的抽象方法

     三、多态

概念:对外一种表现形式,内在有多种具体实现

Java中多态的具体体现

  • 方法重载
  • 方法覆盖
  • 多态参数
    • 方法的参数为父类或者接口时,可以传入父类及其子类或者接口的实现类

运行期类型和编译期类型

  • Animal animal = new Cat();
  • 运行期类型是Cat,编译期类型是Animal
  • 编译时,会去Animal中检查是否有相应的属性和方法
  • 运行时,执行Cat中的实现方法

多态环境下的属性和方法

  • 针对属性,运行期使用父类的属性
  • 针对静态方法,调用的是父类
  • 针对成员方法,调用子类
    • public interface Usb {
      public void read();
      public void write();

}
public class Upan implements Usb{
public void read(){
System.out.println(“u盘读”);
}
public void write(){
System.out.println(“u盘写”);
}
}
public class MovePan implements Usb{
public void read(){
System.out.println(“移动盘读”);
}
public void write(){
System.out.println(“移动盘写”);
}
}
public class Computer {
public void play1(Usb usb){
usb.read();
usb.write();

    }    public void play2(PlayAble usb){        usb.PlayMusic();    }

}
public class App {
private static Usb i;

public static void main(String[] args) {  Computer computer = new Computer();  Usb lu =new Upan();  computer.play1(lu);  Usb lmo = new MovePan();  computer.play1(lmo);Usb[] usbs={new MovePan(),new Mp3(),new Upan()};  for(Usb i:usbs){  computer.play1(i); }

}
}

原创粉丝点击