------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
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 {7.接口定义:接口从本质上说是一种特殊的抽象类,关键字interface
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();
}
}
在接口中,所有的方法为公开,抽象的方法: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();
}
}