【JAVA基础】-继承与接口

本文详细介绍了Java中的继承和接口的基本概念及应用。包括继承的关键字、特点、成员关系及接口的定义、特点等,强调了它们在提高代码复用性和实现多态性方面的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.继承的概念

  把多个类中相同的成员给提取处理定义到一个独立的类中。然后让这多个类和该独立的类产生一个关系,这多个类就具备了这些内容,叫继承。

2.继承的格式:关键字extends

 class 子类名 extends 父类名{}

3.继承的好处:

1)提高了代码的复用性

2)提高了代码的维护性

3)让类与类之间产生了一个关系,是多态的前提

4.继承的弊端

1)让类的耦合性增强。这样某个类的改变,就会影响其他和该类相关的类

原则:底耦合,高内聚

耦合:类与类之间的关系 内聚:自己完成某件事情的能力

2)打破了封装性

5.java中继承的特点

1)JAVA类中只支持单继承

2)JAVA中可以多层继承

注意:1)子类不能继承父类的私有成员

   2)子类不能继承父类的构造方法,但可以通过super去访问

   3)不要will部分功能而去继承

6.JAVA继承中的成员关系

1)成员变量:

(1)子类的成员变量名称和父类的成员变量名称不一样

(2)子类的成员变量名称和父类的成员变量名称一样,如何访问

子类的方法范围变量的查找顺序;

在子类方法的局部范围找,有就使用

在子类的成员范围找,有就使用

在父类的成员范围找,有就使用

找不到就报错。

2)构造方法

(1)子类的构造方法默认会去访问父类的无参构造方法

(2)父类中如果没有无参构造方法

子类通过super去明确调用带参构造

子类通过this调用本身的其他构造,但是一定会有一个区访问了父类的构造,让父类提供无参构造

3)成员方法

(1)子类的成员方法和父类中的成员方法名称不一样

(2)子类的成员方法和父类中的成员方法名称一样

      通过子类对象访问一个方法的查找顺序:

  在子类中找,有就使用;在父类中找,有就使用;找不到,就报错

class Person {
	public void eat() {
		System.out.println("吃饭");
	}
	
	public void sleep() {
		System.out.println("睡觉");
	}
}

class Student extends Person {}

class Teacher extends Person {}

class ExtendsDemo {
	public static void main(String[] args) {
		Student s = new Student();
		s.eat();
		s.sleep();
		System.out.println("-------------");
		
		Teacher t = new Teacher();
		t.eat();
		t.sleep();
	}
}
7.接口定义:接口从本质上说是一种特殊的抽象类,关键字interface

在接口中,所有的方法为公开,抽象的方法:pubic abstract

在接口中,所有的属性都是公开,今天的常量:public static final

接口与接口之间可以多继承,用extends,多个之间用逗号隔开

接口中没有构造方法,不能用new 接口名来实例化一个接口,但可以声明一个接口

8.接口:全部的方法都是抽象方法,全部的属性都是常量

1)接口是特殊的抽象类

2)接口用来表示纯抽象概念,没有任何具体的方法和属性

3)接口不能实例化,可以定义变量

4)接口变量可以引用具体实现类的实例

5)接口只能被实现,一个具体类实现接口,必须使用全部的抽象方法

6)接口之间可以继承

7)一个具体类可以实现多个接口,实现多继承现象

8)实现一个接口,使用关键字:implements

/*所有的小汽车都能跑,停,可以抽象成为借口*/
interface Car{
	void run();
	void stop();
}
 interface Product{
	double getPrice();
}
 class QQ implements Car ,Product{
	public double getPrice() {
		// TODO Auto-generated method stub
		return 3000;
	}
	public void run() {
		System.out.println("启动出发");	
	}
	public void stop() {
		System.out.println("刹车");
		
	}
}
public class QQDemo{
	public static void main(String[] args) {
		//创建一个QQ汽车
		QQ qq=new QQ();
		//QQ汽车是一个产品
		Product p=qq;
		//输出产品的价格
		System.out.println(p.getPrice());
		//QQ是一辆车
		Car car=qq;
		car.run();
		car.stop();
		//这个产品是一辆车
		Car c=(Car)p;
		c.run();
		c.stop();
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值