Java基础学习(三)继承与覆写:

一. 父、子类之间的转型:

1. 向上转型(自动转型):

父类 父类对象=子类实例;

安全的,但会丢失精度,eg:鱼是动物。

2. 向下转型(强制转换):

子类 子类对象=(子类)父类对象;

不安全的,eg:动物是鱼。

二.访问权限修饰符:

  • 可用private封装属性:
封装属性: private 属性类型 属性名;
封装方法: private 方法返回类型 方法名称(参数){}
  • 封装时要设置或获取属性值,只能使用Getter和Setter方法。

三.继承

class 父类{
//定义父类
}
class 子类名 extends 父类{
}

注意:

  1. 在Java中只允许单继承,不允许多继承,即一个子类只能有一个父类。
  2. 父类继承的私有成员,不能被子类直接使用,必须通过设Getter和Setter方法间接操作。
  3. final修饰的类不能再被继承
  4. Java中不允许多重继承,但可以多层继承
//多层继承:
class A{}
class B extends A{}
class C extends B{}

5.子类对象实例化会默认先调用父类的无参构造函数,再调用子类构造方法。

四.super:

  1. super()必须写在子类构造方法的第一行
  2. super可调用父类中的构造方法,属性或方法。
super.父类中的属性;
super.父类中的方法;
  1. super和this的区别:

五.覆写

  1. 覆写的方法的返回值类型必须有和被覆写的方法的返回值类型一致。

  2. 被覆写的方法不能为static

  3. 被覆写的方法不能拥有比父类更为严格的访问控制权限。
    例如:父类方法是default权限,则子类覆写可为default或public。

  4. 在形式上,类定义的对象只能看到自己所属类中的成员。

//举个例子:
class A{
public void a(){
System.out.println("a类的方法");
}
}

class B extends A{
public void a(){  //方法覆写
System.out.println("b类的方法");
}
public void getB(){  //子类的扩充方法
System.out.println("b类的扩充方法");
}
} 

public class one{
public static void main(String args[]){
A a1=new B(); //实例化子类对象
a1.a(); //调用子类B的a()

/* a1.getB(); //编译错误:这个方法父类无法找到 */

B b=(B) a1; //向下转型
b.getB(); //子类对象b的getB()方法
}
}
  1. 重载和覆写的区别:

六.final(终结器):

  1. 使用final修饰的类不能有子类
  2. 使用final定义的方法不能被子类所覆写
  3. 使用final定义的变量就成了常量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值