关于java语言当中的继承:
继承:面向对象3大特征之一(封装 继承 多态)
继承的基本作用: 代码复用。有了继承以后才有了 后面的 方法的覆盖 和 多态机制。
继承的语法:
【修饰符列表】 class 类名 extend 父类名{
类体 = 属性 + 方法
}
java中的继承,一个类中只支持单继承,不支持多继承。 C++支持多继承、
相关术语:
B类继承A类:
A类:父类。基类。超类。superclass
B类:子类。派生类。subclass
子类继承父类哪些部分:
私有不支持继承
构造方法不支持继承
其它都可以继承
虽然java语言当中支持单继承,但是一个累可以间接继承其它类,例如:
C extends B {
}
B extends A{
}
A extends T{
}
C类继承B类,但是间接继承了A和T类。
java语言当中假设 一个类没有显示继承任何类,该类默认继承 javaSE当中提供的 java.lang.Object类。
public class Account {
private String actno;
private double balance;
public Account(){
}
public Account(String actno, double balance){
super();
this.actno = actno;
this.balance = balance;
}
public String getActno() {
return actno;
}
public void setActno(String actno) {
this.actno = actno;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
public class CreditAccunt extends Account{
private double credit;
public CreditAccunt(){
super();
}
public double getCredit() {
return credit;
}
public void setCredit(double credit) {
this.credit = credit;
}
}
/*
关于java语言当中的继承:
继承:面向对象3大特征之一(封装 继承 多态)
继承的基本作用: 代码复用。有了继承以后才有了 后面的 方法的覆盖 和 多态机制。
继承的语法:
【修饰符列表】 class 类名 extend 父类名{
类体 = 属性 + 方法
}
java中的继承,一个类中只支持单继承,不支持多继承。 C++支持多继承、
相关术语:
B类继承A类:
A类:父类。基类。超类。superclass
B类:子类。派生类。subclass
子类继承父类哪些部分:
私有不支持继承
构造方法不支持继承
其它都可以继承
虽然java语言当中支持单继承,但是一个累可以间接继承其它类,例如:
C extends B {
}
B extends A{
}
A extends T{
}
C类继承B类,但是间接继承了A和T类。
java语言当中假设 一个类没有显示继承任何类,该类默认继承 javaSE当中提供的 java.lang.Object类。
双shift 表示 查找类
*/
public class Test {
public static void main(String[] args) {
Test t = new Test();
String s = t.toString(); // 说明可以调用toString方法
System.out.println(s);
CreditAccunt act = new CreditAccunt();
act.setActno("act-001");
act.setCredit(-1000.0);
act.setCredit(0.99);
System.out.println(act.getActno() + "," + act.getBalance() + "," + act.getCredit());
}
}
public class Test {
public static void main(String[] args) {
C c = new C();
c.doSome();
}
}
class A{
public void doSome(){
System.out.println("do Some!"); // 这里继承的方法是从B中继承过来的
}
}
class B extends A{}
class C extends B{}
回顾java语言当中方法的重载:
英文:overload
什么情况 使用 方法重载:
当在同一个类当中,方法完成的功能是相似的,建议方法名相同
就像是在调用一个方法
什么条件 满足 可以 方法重载:
在同一个类
方法名相同
参数列表不同: 类型,顺序,个数
方法覆盖 又称为 方法重写 overwrite/override「官方」
什么情况 使用 父类重写:
当父类中的方法 已经无法满足 当前子类的业务需求
子类中 有必要 将 父类中 继承过来的方法 进行重写
方法重写的时候:
返回值类型相同,方法名相同,形参列表相同
访问权限不能更低,只可以更高。
抛出异常只能更多,不能更少。
注意:
私有方法不能继承, 所以不能覆盖。
构造方法不能继承, 所以不能覆盖。
静态方法不存在覆盖(覆盖只针对 方法 不含 属性)
public class Animal {
// 移动
public void move(){
System.out.println("动物在移动");
}
}
// 鸟类
public class Bird extends Animal {
public void move(){
System.out.println("鸟在飞翔");
}
}
// Cat
public class Cat extends Animal {
public void move(){
System.out.println("猫在在移动");
}
}
public class YingWu extends Bird{
@Override
public void move() {
System.out.println("鹦鹉飞不起来");
}
}
this 关键字: java当中关键字
静态方法中,不可以使用this,因为静态方法中 直接采用 类.方法名 的方式 去调用。
实例方法中,调用实例方法,是通过 new 一个对象,在实例对象中 去调用 这个方法。 this实际上是一个引用。用于调用 存储在堆内存中的对象。
this就两种用法:
一种 this.
另一种 this() 在构造函数第一行调用别的构造函数。
所以静态的,都采用 类. 方式访问,是类级别的。
实例变量在 构造方法的执行过程中访问。
静态变量:在类加载的时候,创造。存在方法区。
extend 继承
java中的类只支持单继承,不支持多继承。
继承的基本作用:代码复用;有了继承才有了方法覆盖 和 多态。
方法重载:在同一个类当中,方法名相同,参数列表不同,实现的功能相似。
在同一个类型当中,如果 这几个方法类型相似,将 方法名设为一样的,但是 参数列表不同。
方法重载 和 返回值类型无关 和 修饰符类型无关。
方法重写:重写父类当中的代码。
父类中的方法无法满足子类的需求。