Java基础学习(四)继承和接口

继承

子类的继承性

子类和父类在同一个包中

子类自然地继承其父类不是private的成员变量和方法作为自己的成员变量和方法,
继承的成员变量和方法的访问权限保持不变

子类和父类不在一个包中

子类继承父类的protected、public成员变量和方法作为自己的成员变量和方法,
继承的成员变量和方法的访问权限保持不变
不能继承父类的友好变量和友好方法

成员变量的隐藏和方法重写

成员变量的隐藏

子类中声明的成员变量和父类的成员变量同名

class A {
	double a;
}
class B extends A{
	int a;
}

方法重写(方法隐藏)

子类中声明的方法名字、参数类型和参数个数和父类相同,方法内的行为可以发生改变

class A {
	int f(int a,int b){
		return a+b;
}
}
class B extends A{
	int f(int a,int b){
		return a*b;
}
}

关键词

super

super调用隐藏的成员变量和方法
super.隐藏变量成员
super.f();
super();

final

final不允许重写
修饰成员变量时,必须赋值并且不能改变

上转型对象和继承多态

上转型对象

class A{
	public int f(int a,int b){
		return a+b;
	}
}
class B extends A{
	public int f(int a,int b){
		return a*b;
}
A a =new B();
a.f(a,b);

最后执行的结果返回a*b

继承、多态

class 动物{
 void cry() { 
 }
}
class 狗 extends 动物{
 void cry() {
  System.out.println(" ");
  } 
}
 class 猫 extends 动物{
  void cry() {
   System.out.println(""); 
   }
}
   public class A{
   public static void main(String args[]){
    动物 animal = new 狗();
    animal.cry(); //animal 是狗的上转型对象
    animal = new 猫() ; 
    animal cry();
    }
}

abstract类和方法(抽象类)

abstract类在类名前面加abstract修饰词,abstract类可以有abstract方法和非abstract方法
abstract方法用abstract修饰不能用new运算符创建对象

abstract类多态

class 动物{
 public abstract void cry();
}
class 狗 extends 动物{
 public void cry() {
  System.out.println(" ");
  } 
}
 class 猫 extends 动物{
  public void cry() {
   System.out.println(""); 
   }
}
public class Ssing{
	public void sing(动物 animal){
		animal.cry();
}
}
  public class A{
   public static void main(String args[]){
    Ssing ssing = new Ssing();
    ssing.sing(new 猫())
    ssing.sing(new 狗())
    }
}

接口

接口的声明和使用

接口使用关键字interface来声明
一个类通过使用关键词implements声明自己实现一个或多个接口,多个接口用逗号隔开

interface B {
}
interface C {
}

class A implements B,C

接口回调

interface 动物{
 void cry();
}
class 狗 implements 动物{
 void cry() {
  System.out.println(" ");
  } 
}
 class 猫 implements 动物{
  void cry() {
   System.out.println(""); 
   }
}
 public class A{
   public static void main(String args[]){
    动物 animal = new 狗();
    animal.cry(); //animal 是狗的上转型对象
    animal = new 猫() ; 
    animal cry();
    }
}

接口的多态

interface 动物{
 void cry();
}
class 狗 implements 动物{
 public void cry() {
  System.out.println(" ");
  } 
}
 class 猫 implements 动物{
  public void cry() {
   System.out.println(""); 
   }
}
public class Ssing{
	public void sing(动物 animal){
		animal.cry();
}
}
  public class A{
   public static void main(String args[]){
    Ssing ssing = new Ssing();
    ssing.sing(new 猫())
    ssing.sing(new 狗())
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

snack-counter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值