Java学习日记-2

继承

继承就是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

class Student{
// 父类
}
class UnStudent extends Student{
// 子类
}
  • 一个类只能直系继承一个父类,所有的父系类都算作这个类的父类。
  • 限制一个类不能有子类:final 修饰。

继承到的内容

  • 内容:
    • 对象成员部分:
      • 属性: 继承
      • 方法: 继承
      • 构造方法:向上调用,子类创建对象时也会调用父类的构造方法。
      • 代码块: 向上包含调用
    • 静态资源部分: 共用父类的
      • 静态属性
      • 静态方法
      • 静态代码块:只会执行一次
  • 访问权限:
    • public: 公开的,任何地方都可以访问。
    • protected: 受保护的,只有子类和同包的类可以访问。
    • package-default: 默认的,只有同包的类可以访问。
    • private: 私有的,只有本类可以访问。
    • 访问权限修饰符,只限制是否可以调用,不限制是否继承 ,依然可以通过封装方法调用。

方法重写

  • 子类重写父类的方法。方法名,参数列表相同。
  • 子类中,以及子类对象在方法被重写后,优先调用重写的方法。
  • 子类可以升级改造父类的方法。
  • 返回值类型,访问权限修饰符可以不同,重写后的方法访问权限不能比父类中被重写的方法的访问权限更低。
  • final,static,private修饰的方法不能被重写,子类依然可以调用。
  • 在子类中,如果依然需要调用父类的方法,子类又重写了,可以使用super调用。
  • 方法重载:同一个类中存在方法名相同,参数列表不同的方法。

类型转型

  • 自动转型: 向上转型,安全转型 ,子类对象可以向上转型为父类类型。
    • A a = new A(); B b = a;// 此行代码编译通过的前提是:A 是 B 的子类
    • 转型的优点: 适配度更广。
      • 将父类类型作为需要类型,所有子类对象都可以匹配。
      • 转型之后,依然调用子类重写的方法,但是不能调用子类中独有的内容。
  • 强制转型: 向下转型,不安全。
A a = new A(); B b1 = a; // A 是 B 的子类,M 也是 B 的子类`
A a1 =(A)b1;// 成立,编译以及运行没问题。`
M m = new M(); B b2 = m;`
A a2 = (A)b2;// 不成立,编译没问题,运行报错 ClassCastException。
  • 强制转型时,需要验证对象的类型
    • 通过对象名调用类名来验证。
    • 通过 intanceof 比较 if(b2 instanceof A){ A a2 = (A)b2; }
  • 不安全的来源:
    • 父类类型变量中存储的对象引用不一定是需要强转的这个类型 。

接口:interface

  • 语法: interface 接口名 { }
    • 属性:只能是 public static final 修饰的属性 。
    • 方法:默认也只能是 public abstract 修饰的方法 。
    • 接口中的方法不能有方法体,即接口中的方法不能由接口进行实现。
    • 接口中可以包含三类方法:抽象方法、默认方法、静态方法。静态方法可以通过“ 接口名.方法名 ”的形式来调用。抽象方法和默认方法只能通过接口实现类的实例对象来调用。
  • 使用: 类名 implements 接口名{ }
    • 接口看作父类 。
    • 实现类看作子类 。
    • 实现类中必须重写接口中所有的抽象方法 。
    • 支持多继承。
public interface Basketball{
	public void hit();
}

public interface Football{
	public void kick();
}

class Player implements Basketball, Football{
	public void hit(){
		...
	}
	public void kick(){
		...
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值