1.抽象类

1.抽象类

//抽象父类
public abstract class Shape {
{
System.out.println("1.开始抽象类的初始化");
} private String color;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
} //定义抽象方法,子类实现
public abstract String getType();
//定义抽象方法,子类实现
public abstract double calPerimeter(); //无参构造
private Shape(){
System.out.println("2.无参初始化");
}
//有参构造
public Shape(String color){
this.color = color;
System.out.println("2.有参初始化");
}
}
//子类继承抽象父类
public class Triangle extends Shape {
private double a; public double getA() {
return a;
} public void setA(double a) {
this.a = a;
} public Triangle(String color, double a){
super(color);
this.a = a;
System.out.println("3.有颜色的三角形");
} @Override
public String getType() {
// TODO Auto-generated method stub
//重写的抽象方法
return "无颜色三角形";
} @Override
public double calPerimeter() {
// TODO Auto-generated method stub
//重写的抽象方法
return 2.0;
}
}
public class Study {
public static void main(String[] args) {
Shape tColor = new Triangle("Bule", 3.0); System.out.println(tColor.getType());
System.out.println(String.valueOf(tColor.calPerimeter()));
}//main
}

2.接口和抽象类的关系

2.1实现上的区别:

通用的功能应该用抽象类和继承来实现,个别的功能应该用接口来实现

22.类和接口的关系:

* 非抽象类实现接口时候,必须实现接口方法

* 抽象类实现接口时候,不必须实现接口方法

2.3.Java为什么只能单继承可以多实现:

* 如果一个类继承了多个类,那么多个类存在同名方法,此时子类必须实现父类方法,造成混乱。
* 而多实现中,类即使实现了多个接口的同名方法,在实例化时候使用的还是自己从接口override的方法

2.4.接口和接口的关系:

一个接口是可以继承多个接口的


3.多态

多态的应用:

  • 用于形参时候,能够接收更多类型参数
  • 用于返回类型时候,能够返回更多类型参数

多态的注意点:

  • 多态下,子类调用成员变量,访问的是父类的成员变量
  • 多态下,不能调用子类的方法,如果要使用,则需要强制转换,强制转换之前要用instance of判断是否可以强转
public void Fun(SuperClass clazz){
if(clazz instanceof SubClass){
clazz.SubFun
}
}
//抽象父类
public abstract class Shape {
{
System.out.println("1.开始抽象类的初始化");
} private String color;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
} //定义抽象方法,子类实现
public abstract String getType();
//定义抽象方法,子类实现
public abstract double calPerimeter(); //无参构造
private Shape(){
System.out.println("2.无参初始化");
}
//有参构造
public Shape(String color){
this.color = color;
System.out.println("2.有参初始化");
}
}
//子类继承抽象父类
public class Triangle extends Shape {
private double a; public double getA() {
return a;
} public void setA(double a) {
this.a = a;
} public Triangle(String color, double a){
super(color);
this.a = a;
System.out.println("3.有颜色的三角形");
} @Override
public String getType() {
// TODO Auto-generated method stub
//重写的抽象方法
return "无颜色三角形";
} @Override
public double calPerimeter() {
// TODO Auto-generated method stub
//重写的抽象方法
return 2.0;
}
}
public class Study {
public static void main(String[] args) {
Shape tColor = new Triangle("Bule", 3.0); System.out.println(tColor.getType());
System.out.println(String.valueOf(tColor.calPerimeter()));
}//main
}

2.接口和抽象类的关系

2.1实现上的区别:

通用的功能应该用抽象类和继承来实现,个别的功能应该用接口来实现

22.类和接口的关系:

* 非抽象类实现接口时候,必须实现接口方法

* 抽象类实现接口时候,不必须实现接口方法

2.3.Java为什么只能单继承可以多实现:

* 如果一个类继承了多个类,那么多个类存在同名方法,此时子类必须实现父类方法,造成混乱。
* 而多实现中,类即使实现了多个接口的同名方法,在实例化时候使用的还是自己从接口override的方法

2.4.接口和接口的关系:

一个接口是可以继承多个接口的


3.多态

多态的应用:

  • 用于形参时候,能够接收更多类型参数
  • 用于返回类型时候,能够返回更多类型参数

多态的注意点:

  • 多态下,子类调用成员变量,访问的是父类的成员变量
  • 多态下,不能调用子类的方法,如果要使用,则需要强制转换,强制转换之前要用instance of判断是否可以强转
public void Fun(SuperClass clazz){
if(clazz instanceof SubClass){
clazz.SubFun
}
}

最新文章

  1. 性能优化方法(Z)
  2. redis-cluster 迁移过程错误记录
  3. C#键盘钩子 鼠标钩子
  4. js九宫格的碰撞检测
  5. 【Mongodb】3.0 配置身份验证db.createUser()说明
  6. postgresql 行转列,列转行后加入到一个整体数据
  7. 从IT的角度思考BIM(二):模式与框架
  8. js 打开新页面 window.open()
  9. code blocks 快捷键
  10. 使用java写一个小白计算器
  11. AngularJS进阶(三十四)Angular数据更新不及时问题探讨
  12. Delphi的TService 服务路径获取 Dll中获取文件路径
  13. Python_Runoob
  14. Permutations CodeForces - 736D (矩阵逆)
  15. C/C++ 打开串口和关闭串口
  16. 为了记忆和方便翻阅 vue构建后的结构目录说明
  17. AC自动机板子题/AC自动机学习笔记!
  18. TX2 i2c-tools使用
  19. Linux入门进阶第三天——软件安装管理(下)
  20. CF 833 B. The Bakery

热门文章

  1. 非mapreduce生成Hfile,然后导入hbase当中
  2. python学习笔记-学习大纲
  3. 互斥锁,IPC队列
  4. ScrollView嵌套RecyclerView、ScrollView嵌套Listview、ScrollView嵌套各种布局,默认不在顶部和回到顶部的解决方法;
  5. ERROR: duplicate key value violates unique constraint "xxx"
  6. js原生轮播
  7. ROS 进阶学习笔记(13) - Combine Subscriber and Publisher in Python, ROS
  8. 《算法》第四章部分程序 part 16
  9. maven 常用插件3
  10. JQuery:聚焦清空输入框值,失焦恢复默认值