面向对象的三大特征
封装 继承 多态
1.继承:继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的 功能,但不能选择性地继承父类。通过使用继承可以提高代码复用性。继承是多态的前提。
2.所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。
3.封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。
该类为电脑类
package com.gyx;
public class Computer implements ComputerAndPhonesInterface{
@Override
public void game() {
System.out.println("玩电脑游戏");
}
@Override
public void chat() {
System.out.println("用电脑聊天");
}
}
电脑手机接口
package com.gyx;
/**
* 手机电脑共同方法
*/
public interface ComputerAndPhonesInterface {
void game();//玩游戏
void chat();//聊天
}
手机父类
package com.gyx;
public class Phone {
private String screen;// 屏幕
private String antenna;//天线
private String key;//按键
public String getScreen() {
return screen;
}
public void setScreen(String screen) {
this.screen = screen;
}
public String getAntenna() {
return antenna;
}
public void setAntenna(String antenna) {
this.antenna = antenna;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
@Override
public String toString() {
return "Phone{" +
"screen='" + screen + '\'' +
", antenna='" + antenna + '\'' +
", key='" + key + '\'' +
'}';
}
public void call(){
System.out.println("打电话");
}
public void sms(){
System.out.println("发短信");
}
}
继承父类,并且实现实现电脑手机接口
package com.gyx;
public class Phone2 extends Phone implements ComputerAndPhonesInterface{
private String screen;// 屏幕
private String antenna;//天线
private String key;//按键
public String getScreen() {
return screen;
}
public void setScreen(String screen) {
this.screen = screen;
}
public String getAntenna() {
return antenna;
}
public void setAntenna(String antenna) {
this.antenna = antenna;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
@Override
public String toString() {
return "Phone{" +
"screen='" + screen + '\'' +
", antenna='" + antenna + '\'' +
", key='" + key + '\'' +
'}';
}
//手机独有功能
public void call(){
System.out.println("打电话2222222222222");
}
public void sms(){
System.out.println("发短信22222222222222");
}
//此处实现父类方法
@Override
public void game() {
System.out.println("玩手机游戏");
}
@Override
public void chat() {
System.out.println("用手机聊天");
}
}
测试类
package com.gyx;
public class Test {
public static void main(String[] args) {
//手机接口实现手机方法
Phone p = new Phone2();
p.sms();
p.call();
System.out.println("---------------------");
//接口类型实现手机方法
ComputerAndPhonesInterface cp = new Phone2();
cp.game();
cp.chat();
System.out.println("---------------------");
//接口实现电脑方法
ComputerAndPhonesInterface cp2 = new Computer();
cp2.chat();
cp2.game();
}
}
输出结果