java_面向对象_继承_9.0

  • 继承概述
继承就是把多个类中相同的部分提取出来定义到一个类中(父类),通过关键字extends。
class 子类名 extends 父类名 {}
  • 继承优势
1. 提高了代码的复用性。
2. 提高了代码的维护性。 //增加修改功能只需要修改父类就可以了,不需要挨个在子类中修改了。
3. 让类与类之间产生了关系,是多态的前提.
//这个也是继承的弊端,因为类的耦合性增强了。

//开发的原则: 低耦合,高内聚
//耦合:类与类的关系
//内聚:就是自己完成某件事情的能力
  • java继承的特点
4. 只支持单继承,不支持多继承。
//class Son exnteds Father {} //单继承,正确的
//class Son extends Father,Mother {} //多继承,错误的
5. Java支持多层继承(继承体系)
  • java继承的注意事项
6. 子类只能继承父类所有非私有的成员(成员方法和成员变量)
7. 子类不能继承父类的构造方法;但是可以通过super关键字去访问父类的构造方法。
8. 不要为了部分功能而去继承。
/*
class A {
			public void show1(){};
			public void show2(){};
		}
class B {
			public void show2(){};   //我们发现B类中出现了和A类一样的show2()方法,所以,我们就用继承来体现
			public void show3(){};
		}
//这样其实不好,因为这样你不但有了show2(),还多了show1()。有可能show1()不是你想要的。
class B extends A {
				public void show3(){};
		}
			
*/
继承体现的是一种关系"is a";比如student is person,teacher is person;
或者apple is fruits,banana is fruits;
采用假设法,如果有两个类A,B,只有他们符合A是B的一种,或者B是A的一种,就可以考虑使用继承。
  • 未使用继承
    在这里插入图片描述
  • 使用继承之后
    在这里插入图片描述
    代码详解:
//只能单继承,不能多继承,但是可以多层继承。
class GrandFather {
	public void show() {
		System.out.println("我是爷爷");
	}
}
class Father extends GrandFather {
	public void method(){
		System.out.println("我是老子");
	}
}
class Son extends Father {}

class ExtendsDemo2 {
	public static void main(String[] args) {
		Son s = new Son();
		s.method(); //使用父亲的
		s.show(); //使用爷爷的
	}
}
  • 私有成员,子类不能继承
    private关键字天生就是为了被public修饰的方法进行调用的。
    private关键字是为了杜绝对象调用成员变量和成员方法的时候传入非法的数值,所以被private修饰的成员变量和成员方法只能通过类提供的指定方法进行访问赋值,而这个指定的方法必须要被对象调用(public修饰),所以说private天生是被public修饰的进行调用。
    在这里插入图片描述
发布了80 篇原创文章 · 获赞 0 · 访问量 1762

猜你喜欢

转载自blog.csdn.net/weixin_41272269/article/details/103645137