1:面向对象->继承
描述事物之间的所属关系。使用种事物之间形成一种关系体系。
在java中类的继承是指在现有类的基础上构建一个新的类,构建出来的新类我们称作子类,
现有的类称作为父类。
子类会自动拥有父类所有的可继承的属性和方法。

package com.itstar.demo01;
/*
* 定义员工类
* 属性和方法:
* 成员变量 姓名
* 成员方法 工作
*/
public class Emplpyee {
String name;
public void work() {
System.out.println("员工在工作");
}
}
package com.itstar.demo01;
/*
* 定义研发部:
* 属于员工中的一种
* 研发共工继承研发类
*
* 关键字:extends
* 子类Develop 父类Emplpyee
* 子类自动拥有父类中可以继承的属性和方法
*
*/
public class Develop extends Emplpyee{
// 子类中定义了方法
public void print() {
// 打印的是父类的成员变量
System.err.println(name);
}
}
package com.itstar.demo01;
/*
* 定义维护运维类
* 属于员工的一种,继承员工类
*/
public class YunWei extends Emplpyee{
public void weihu() {
System.out.println(name);
}
}
package com.itstar.demo01;
public class Test {
public static void main(String[] args) {
// 创建研发员工类的对象
Develop d = new Develop();
d.name = "裂缝";
d.work();
// 创建维护类对象
YunWei y = new YunWei();
y.name = "收嗯";
y.weihu();
y.work();
}
}
2:面向对象->继承好处
1、继承的出现提升了代码的复用性,提高软件开发效率。
2、继承的出现让我们类与类之间产生了关系(继承关系),提供了多态的前提。继承和多态是密不可分的
的关系。
3、父类中的属性和方法子类可以直接用,或者创建对象也可以用。
package com.itstar.demo02;
public class fu {
int a = 1;
}
package com.itstar.demo02;
public class Zi extends fu{
int a = 3;
// 创建方法
public void show() {
int a = 4;
System.out.println(a);
// this可以用成员变量
//System.out.println(this.a);
// 调用的既不是成员变量也不是方法当中的变量,而是父类当中的变量
System.out.println(super.a);
}
}
package com.itstar.demo02;
public class Test {
public static void main(String[] args) {
// 创建对象
Zi z = new Zi();
int i = z.a;
System.out.println(i);
// 子类自己有的自然调用自己的,没有的调用父类的
// 方法的就近原则,不是覆盖
z.show();
}
}

例子:
package com.itstar.demo03;
public class Fu {
public void show() {
System.out.println("父类中的show方法");
}
}
package com.itstar.demo03;
public class Zi extends Fu{
public void show() {
System.out.println("子类的重写show方法");
}
public void show2() {
System.out.println("子类中的show2方法");
}
}
package com.itstar.demo03;
public class Test {
public static void main(String[] args) {
Zi z = new Zi();
// 子类中没有show方法,自然去父类当中找
z.show();
z.show2();
}
}
package com.itstar.demo04;
/*
* 定义手机功能
* 功能:打电话、发短信、微信
*/
public class Phone {
public void Call() {
System.out.println("手机在打电话");
}
public void sendMessage() {
System.out.println("手机在发短信");
}
public void weChat() {
System.out.println("手机在微信");
}
}
package com.itstar.demo04;
/*
* 方法覆盖的注意事项:
* 子类方法覆盖父类方法,必须保证权限要大于等于父类的权限
* 子类重写父类的方法,保证子类的权限要大于等于父类的权限
* java中有4大权限:依次减小
* public:公有
* protected:受保护的
* default:默认(特别,不写)权限
* private:私有的
*/
public class AndroindPhone extends Phone{
public void weChat() {
super.weChat();
System.out.println("跳一跳");
System.out.println("脑强王者");
}
}
package com.itstar.demo04;
public class Test {
public static void main(String[] args) {
// 创建对象
Phone p = new Phone();
p.Call();
p.sendMessage();
p.weChat();
AndroindPhone ap = new AndroindPhone();
ap.weChat();
}
}


package com.itstar.demo05;
/*
* 定义类,开发工程师类
* ee工程师:工作
* 安卓工程师:工作
*/
public abstract class Develop {
public abstract void work();
}
package com.itstar.demo05;
public class JavaEE extends Develop{
// 重写父类的抽象方法
public void work() {
System.out.println("JAVAEE工程师正在开发后台管理系统");
}
}
package com.itstar.demo05;
public class Android extends Develop{
public void work() {
System.out.println("Andoid工程师正在开发手机软件");
}
}
package com.itstar.demo05;
public class Test {
public static void main(String[] args) {
// 父类为抽象类 所以没有办法实例化
JavaEE j = new JavaEE();
j.work();
Android a = new Android();
a.work();
}
}
package com.itstar.demo06;
public abstract class Animal {
public void sleep() {
System.out.println("动物在睡觉");
}
//private abstract void show();不可以,原因,本来抽象类的存在就是让子类去重写抽象类方法的
public abstract void show();
}
package com.itstar.demo06;
public class Cat extends Animal{
public void show() {
System.out.println("小猫正在睡觉");
}
}
package com.itstar.demo06;
public class Test {
public static void main(String[] args) {
Cat c = new Cat();
c.sleep();
c.show();
}
}
package com.itstar.demo07;
/*
* 员工类
*
*/
public abstract class Employee {
private String name;
private String id;
public abstract void work();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
package com.itstar.demo07;
/*
* 研发部
*/
public abstract class Develop extends Employee{
}
package com.itstar.demo07;
public class JavaEE extends Develop{
public void work() {
System.out.println("JavaEE在开发淘宝" + super.getId() + "...." + super.getName());
}
}
package com.itstar.demo07;
public abstract class YunWei extends Employee{
}
package com.itstar.demo07;
public class NetWork extends YunWei{
public void work() {
System.out.println("网络工程师在装网络" + super.getId() + "..." + super.getName());
}
}
package com.itstar.demo07;
public class Test {
public static void main(String[] args) {
JavaEE ee = new JavaEE();
NetWork n = new NetWork();
ee.setId("研发1号小弟");
ee.setName("小店");
n.setId("运维2号小弟");
n.setName("农二");
ee.work();
n.work();
}
}