继承的本质是对某一类的抽象,从而实现对现实世界更好的建模
1.extends的意思是扩展,子类是父类的扩展
2.Java中类只有单继承,没有多继承
在Java中,所有类都默认直接或间接继承Object类,Object是所有类的父类
子类继承了父类,就会拥有父类的全部方法
super注意点
1.super调用父类的构造方法,必须在构造方法的第一个
2.super必须只能出现在子类的方法或者构造方法中!
3.super和 this 不能同时调用构造方法!
VS this
代表的对象不同:
this:本身只调用这个对象
super:代表父类对象的应用
前提
this:没有继承也可以用
super:只能在继承条件下才可以使用
构造方法
this();本类的构造
super();父类的构造!
重写:需要有继承关系,子类重写父类的方法
1.方法名必须相同
2.参数列表必须相同
3.修饰符:范围可以扩大但不能缩小 public>protected>default>private
4.抛出的异常,范围,可以缩小,但不能扩大: ClassNotFoundException-->Exception(大)
重写:子类的方法和父类必要一致(方法名,方法修饰,结构):方法体不同
为什么要重写:
1.父类的功能,子类不一定需要,或者不一定满足
Alt + insert :override(重写)---子类重写快捷键(在idea)中
多态的注意事项:
1.多态是方法多态,属性没有多态
2.父类和子类有联系, 类型转换异常! ClassCastException!
3.多态存在条件:
(1)继承关系
(2)方法需要重写
(3)父类的引用指向子类对象!Father f1 = new Son();
1.static 方法,属于类,它不属于实例
2.final 常量
3.private 方法:私有的
instanceof (类型转换) 引用类型
//抽象类:类 extends -- 单继承 (接口可以多继承)
public abstract class Action {
//约束--有人帮我们实现
//abstract,抽象方法,只有方法名字,没有方法的实现
public abstract void doSomething();
//1.不能new这个抽象类,只能靠子类去实现它,约束!
//2.抽象类中可以写普通的方法
//3.抽象方法必须在抽象类中
//抽象的抽象:约束
//抽象类中可以用new 对象? 存在构造方法?
//存在的意义 ---抽象出来,提高开发效率
接口 关键字interface,接口只定义一些方法,接口都需要实现类来实现定义的这些抽象方法
/*
声明类的关键字是class,声明接口的关键字是interface
普通类:只有具体实现
抽象类:具体实现和规范(抽象方法)都有!
接口:只有规范!自己无法写方法-专业的约束!约束和实现分离:---面向接口编程
接口的本质是契约
接口作用:
1.约束
2.定义一些方法,让不同的人实现
3.接口中的方法都是抽象的public abstract(编写时一般省略public abstract,系统自动识别,写出来也是灰色的)
4.接口中定义的常量都是public static final
5.接口不能被实例化~,接口中没有构造方法
6.接口可以被多实现,实现接口的关键字,implements
7.实现接口的类,必须要重写接口中的方法
进程:一个进程里包含多个线程,程序运行起来就叫进程
线程:线程是程序中执行的线程
创建线程的方式一:继承Thread类,重写run()方法,调用start开启线程
/*
步骤:
1,自定义线程类继承Thread类
2.重写run()方法,编写线程执行体
3.创建线程对象,调用start()方法启动线程
*/
//总结==注意,线程开启不一定立即执行,有CPU调度执行
创建线程方式2:实现Runnable接口标签:重写,Java,子类,接口,基础知识,线程,整理,父类,方法 From: https://www.cnblogs.com/CaiDingChao/p/16600614.html
//重写run方法,执行线程需要丢人runnable接口实现类,调用start方法
/*
步骤
1.定义MyRunnable类实现runnable接口,
2.实现run()方法,编写线程执行体
3.创建线程对象,调用start()方法启动线程