Java学习第九天2021.7.29

今天学习的内容蛮多的,多写代码,多多学习。

继承

继承概述

在Java中,继承是给了子类访问父类的一个权限,也可以说是子类继承了父类非私有的内容。继承用extends后面加上父类就可以了,下面举了简单的例子去看一下

class demo01
{
	public static void main(String[] args){
		B b = new B();
		b.print();
	}
}
class A
{
	int a = 12;
}
class B extends A
{
	public void print(){
		System.out.println(a);
	}
}

会发现B中没有a这个变量,但是可以进行输出,这就是继承

继承之构造方法

在继承中,构造方法不会被继承,没有继承的,为什么子类还是会走父类的构造呢,构造方法的第一句,有一个隐藏的super();。你不写,系统也会自动加上。

class Demo2 
{
	public static void main(String[] args) 
	{
		B c = new B();
	}
}
class A
{
	int c;
	public  A(){
		System.out.println("我是A");
	}
	public  A(int a){
		System.out.println("我是A的有参构造");
	}
}
class B extends A
{
	public B(){
		super(100);
		System.out.println("我是B");
	}
}

继承之成员方法

父类的私有变量是没有办法去继承的,但是非私有的变量可以继承

class Demo02
{
	public static void main(String[] args){
		B b = new B();
	}
}
class A
{
	private int a = 4;
}
class B extends A
{
	public void pritn(){
		System.out.println(a);
	}
}

在这里插入图片描述

继承之成员方法

其实构造方法就是一种成员方法,咱们可以看出来可以使用父类的成员方法,前提是这个方法是非私有的

方法的重写

方法的重写要求有继承关系,然后一个在父类,一个在子类中。并且方法的声明一模一样,只有方法体的不一样,在这种情况之下,就会执行子类的方法

class Demo02
{
	public static void main(String[] args){
		B b = new B();
		b.print();
	}
}
class A
{
	public void print(){
		System.out.println("a");
	}
}
class B extends A
{
	public void print(){
		System.out.println("b");
	}
}

会发现输出的是b
重点:子类的一定要大于或者等于父类

多态

多态概述

多态就是一个类多个状态,也可以说是赋予了父类访问子类的权限,多态的使用格式:父类的类型 变量名 = new 子类的类型();
而且子类中有的方法,父类中也得有,否则会报错

多态成员方法

多态的成员方法咱们来使用代码来进行说明

class Demo6 
{
	public static void main(String[] args) 
	{
		A a = new B();
		
		a.m();
	}
}
class A	//父类
{
	public void m(){
		System.out.println("A");
	}
}
class B extends A //子类
{
	public void m(){
		System.out.println("B");
	}
}

会发现执行的是子类的方法

多态成员变量

多态的成员变量也是看代码的执行把

class Demo7
{
	public static void main(String[] args) 
	{
		A a = new B();
	    System.out.println(a.a);
		a.m();
	}
}
class A	//父类
{
	int a = 100;
	public void m(){
		System.out.println("A"+a);
	}
}
class B extends A //子类
{
	int a = 200;
	public void m(){
		System.out.println("B"+this.a);
	}
}

会发现输出的结果是父类的。这就表示了成员变量应该是父类的

总结

多态的使用条件(缺一不可)

  • 有继承关系
  • 要有方法重写
  • 父类引用指向子类对象

多态的运行结果

  • 变量编译看左边,执行看左边
  • 方法编译看左边,执行看右边

抽象类

上面写父类的时候就发现了一个问题,父类中是要写方法,但是父类的方法根本用不到,或者说不发进行调用。所以咱们可以把父类写成抽象类。
抽象类要把类前面加上abstract,并且抽象方法也要加abstract。下面举一个例子

abstract class A{
	public abstract static void m();
}

这就是定义的抽象类,抽象类中可以有普通的方法。但是有抽象方法的类一定是抽象类。而且抽象类不能实例化,必须要用多态的方式来进行实例化

接口

接口是一种特殊的类,定义格式是:interface 接口名{}
一个类只能继承一个父类,但是可以引用多个接口,引用接口使用implements关键字

接口的成员

  • 构造:没有构造器(不能实例化)
  • 变量:不能。只能由常量
  • 方法:只能是抽象方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值