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.抽象类实现接口,可以不实现接口中的抽象方法} 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); }} }