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 interface Usb {
}
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); }
}
}
- Java的三大特性
- java的三大特性
- JAVA的三大特性
- Java 的三大特性
- java的三大特性
- java的三大特性
- java的三大特性
- java的三大特性
- java的三大特性
- JAVA的三大特性
- java的三大特性
- java的三大特性
- Java的三大特性
- Java 的三大特性
- java 三大特性
- Java三大特性
- Java三大特性
- Java三大特性
- Java中的反射机制
- Go队列和堆栈
- Markdown转HTML之Node篇
- Android ToggleButton(开关)
- javascript 继承
- java的三大特性
- Java面向对象的三大特性
- 消息队列应用场景
- Java 发送http请求,上传文件
- 《Core Java》读书笔记——第12章
- lintcode 4.丑数 II(优先队列)
- 面向对象的三大特性
- 从无到有RNN
- [LeetCode