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
}
}

8.抽象类、接口和多态.md的更多相关文章

  1. python 全栈开发,Day21(抽象类,接口类,多态,鸭子类型)

    一.昨日复习 派生方法和派生属性 super 只有在子父类拥有同名方法的时候, 想使用子类的对象调用父类的方法时,才使用super super在类内 : super().方法名(arg1,..) 指名 ...

  2. python面向对象 : 抽象类(接口类),多态,封装(私有制封装)

    一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对 ...

  3. 【学习笔记】--- 老男孩学Python,day18 面向对象------抽象类(接口类), 多态, 封装

    抽象类,接口类 Python没有接口这个概念 抽象类(接口类): 目的是制定一个规范 要学会归一化设计,有重复的东西就要想把它们合并起来 from abc import ABCMeta, abstra ...

  4. python day - 19 抽象类 接口类 多态 封装

    一. 抽象类接口类即制定一个规范 特点: 1.不可被实例化. 2.规范子类当中必须事先某个方法. 3.在python中有原生实现抽象类的方法,但没有原生实现接口类的方法. 例题:制定一个规范就是,子类 ...

  5. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

  6. luogg_java学习_07_抽象类_接口_多态学习总结

    这篇博客总结了半天,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 , 抽象 一种专门用来做父类,被继承的. (模板) 格式: abs ...

  7. 面向对象 OOP中的抽象类,接口以及多态

    [抽象类与抽象方法] 1.什么是抽象方法? 没有方法体{}的方法,必须使用abstract关键字修饰,这样的方法,我们称之为抽象方法. abstract function say() 2.什么是抽象类 ...

  8. 详解java基础--抽象类、接口与多态

    抽象类.接口.多态都是面向对象中很基础的东西,我相信看到能本篇博客的人本不会再纠结它的基本定义了,本篇文章将尽量的更加深层次的挖掘其内涵,希望能对大家有帮助. 一.抽象类 1.形式 abstract ...

  9. 记录:JAVA抽象类、接口、多态

    JAVA抽象类.接口.多态 1. 多态 定义 多态是同一个行为具有多个不同表现形式或形态的能力.(多态就是同一个接口,使用不同的实例而执行不同操作) 如何实现多态 继承和接口 父类和接口类型的变量赋值 ...

随机推荐

  1. nodejs中mysql用法

    nodejs也算是一篇脚本了我们来看nodejs如何使用mysql数据库了有了它们两组合感觉还是非常的不错哦,下面一起来看nodejs中使用mysql数据库的示例,希望能够帮助到各位. <scr ...

  2. 如何在ubuntu系统里面用新加装的硬盘对系统进行扩容

    我这里是用256G的固态硬盘安装了系统,想通过扩展1T的机械硬盘存储数据的,现在我们需要的就是把这个1T的硬盘进行扩容进去 使用df -h和sudo fdisk -l命令查看磁盘情况 切换到root用 ...

  3. angular的常见问题

    ng-if 跟 ng-show/hide 的区别有哪些? 第一点区别是,ng-if 在后面表达式为 true 的时候才创建这个 dom 节点,ng-show 是初始时就创建了,用 display:bl ...

  4. 在linux环境下mongodb的安装和启动

    安装 下载mongodb的版本,两点注意 根据业界规则,偶数为稳定版,如1.6.X,奇数为开发版,如1.7.X 32bit的mongodb最大只能存放2G的数据,64bit就没有限制 到官网,选择合适 ...

  5. 不用MathType, 如何在Mac Word中插入公式

    不用MathType, 如何在Mac Word中插入公式 找了好久都找不到MathType的破解版,不得不使用免费清爽的MarkDown编辑工具Typora_for_Mac. 我是很喜欢Typora的 ...

  6. Maven概念模型

    两个核心 1.依懒管理:对jar包管理 2.项目构建管理:通过命令进行项目构建管理

  7. Android 开发第三步-问题解析

    因为这个问题,困扰了好久 最后找到了最根本的问题,当时是因为没有R.java为什么没有? 是因为布局出现了错误,在一篇百度经验中找到了怎样解决 https://jingyan.baidu.com/ar ...

  8. yum-cron更新 CentOS yum update 不升级内核版本方法

    http://www.360doc.com/content/15/0608/17/15798950_476597844.shtml 相关yum-cron说明有一些 CentOS yum update ...

  9. Android开发中常见的设计模式(一)——单例模式

    首先了解一些单例模式的概念. 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 这样做有以下几个优点 对于那些比较耗内存的类,只实例化一次可以大大提高性能,尤其是在移动开发中. 保持 ...

  10. gulp 添加版本号 解决浏览器缓存问题

    分别安装gulp-rev.gulp-rev-collerctor.gulp-asset-rev,安装了的略过 npm install gulp-rev --save-dev npm install g ...