继承,多态,抽象,接口
Posted sunbinary
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承,多态,抽象,接口相关的知识,希望对你有一定的参考价值。
-- 继承:
1、子类继承父类中所有属性和方法。
2、子类只能重写父类中实例方法。
3、super关键,如果放到子类构造函数第一行,如果出现子类方法中可通过该关键字调用子类覆写的方法
4、使用final关键字修饰的方法不能重写,类不能被继承。
5、static关键字修改的方法只属于所在类,不属于类的实例,但是所有实例共享静态成员,static修饰的方法中必须调用静态的方法和使用静态变量。
在static中不能使用this和super关键字。
package com.oop.demo; public class StaticDemo { private static StaticDemo staticDemo = new StaticDemo(); static String name; { System.out.println("代码块"); } static { System.out.println("静态块"); } public StaticDemo() { System.out.println("构造函数"); } public void printName() { System.out.println("name: "+name); } public static void main(String[] args) { StaticDemo staticDemo = new StaticDemo(); staticDemo.name = "张三"; StaticDemo staticDemo2 = new StaticDemo(); staticDemo2.name = "李四"; staticDemo.printName(); staticDemo2.printName(); } }
执行结果:
代码块
构造函数
静态块
代码块
构造函数
代码块
构造函数
name: 李四
name: 李四
-- 多态: 就是一个事物多种表现形态
表现形式:
重写(子类中重写父类中的方法)
重载(在同一个类中定义参数类型和参数个数不同且方法名称相同的方法就是重载,它与返回值无关)。
重写:
package com.extend.demo; public class Student { public void study() { System.out.println("学习爱学习"); } } ------------------------------------------------ package com.extend.demo; public class LittleStudent extends Student { @Override public void study() { System.out.println("小学生正在学习....."); } } --------------------------------------------------- package com.extend.demo; public class MiddleStudent extends Student { @Override public void study() { System.out.println("中学生正在学习......"); } } ---------------------------------------------------------- package com.extend.demo; public class TestStudent { public static void main(String[] args) { LittleStudent little = new LittleStudent(); MiddleStudent middle = new MiddleStudent(); little.study(); middle.study(); System.out.println("--------------"); Student little1 = new LittleStudent(); Student middle1 = new MiddleStudent(); study(little1); study(middle1); } public static void study(Student stu) { stu.study(); } }
--------------------------------------------------
执行结果:
小学生正在学习.....
中学生正在学习......
--------------
小学生正在学习.....
中学生正在学习......
重载:
package com.overload.demo; public class Operator { public int sum(int num1, int num2) { return num1+num2; } public float sum(float num1, float num2) { return num1+num2; } public float sum(int num1, float num2) { return num1+num2; } }
-- 抽象就是一种理论,思想,不能用具体语言描述的事物。
UFO-> 使用什么驱动-> 能飞,形状: 椭圆形。
抽象类: 使用abstract关键字修饰的类,就是抽象类。
语法: public abstract class 抽象类名称 {}
总结:
1、抽象类不能被实例化
2、抽象类中可以定义抽象方法
3、抽象方法不能使用private修饰
4、抽象类可以继承抽象类并且可以不实现父类中抽象方法
抽象类: 模板设计模式
-- 接口: 使用interface关键字修饰的类.
* 1、使用interface关键字修饰的类
* 2、接口是特殊的抽象类,不能有构造函数,不能成员变量
* 3、接口中所有成员,常量,方法都是public
* 4、接口中定义声明都是抽象的。
* 5、接口必须让其实现类使用implements关键字实现接口中所有定义抽象声明
* 6、jdk1.8版本及以上能够哎接口中定义使用static和default关键定义实现方法
* 作用: 限定其实现类必须具有的方法
以上是关于继承,多态,抽象,接口的主要内容,如果未能解决你的问题,请参考以下文章