A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaobokk 中级黑马   /  2016-8-2 22:19  /  246 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

继承:
        概念:让类与类之间产生关系,子父类关系
       
        理解: 猫与狗都有相同的属性(例如毛色,腿的个数)
                  如果定义两个类,类中都有这些成员变量以及对应的setXxx()与getXxx()方法,
                  那么代码的复用性就太差了,可以抽取出来一个动物类,然后可以继承它,然后
                  猫与狗类同时继承动物类,可以提高代码的复用性
       
        继承的特点:
                        A:java中只支持单继承,不支持多继承
                        B:java支持多层继承,子类享有父亲和爷爷...的属性
       
        类继承的特点:
                        如果想看到最多的功能,那么创建最低层的对象
                        如果想看到共性的功能,那么创建最顶层的对象
       
        继承的好处:
                        A:提高了代码的复用性
                        B:提高了代码的维护性
                        C:让类与类之间产生了关系,是多态的前提
        继承的弊端:
                        提高了耦合性      (开发的原则:高内聚,低耦合)
       
        继承的注意事项:
                        A:子类只能继承父类所有非私有的成员
                        B:子类不能继承父类的构造方法,但可以通过super关键字访问
                        C:不要为了单一的功能去继承
        this与super的使用区别(子类继承父类的变量与方法,当标识符不相同时,this就相当于调用了继承下来的方法):
                        A:调用成员变量
                                        this.成员变量: 调用本类的成员变量,也可以调用父类中的成员变量
                                        super.成员变量: 调用父类的成员变量
                        B: 调用构造方法
                                        this(..)  调用本类的构造方法
                                        super(..) 调用父类的构造方法
                        C:调用成员方法
                                        this.成员方法  调用本类的成员方法,也快成调用父类的成员方法
                                        this.成员方法  调用本类的成员方法
       
        继承中构造方法的关系
                子类中所有的构造方法都会访问父类中空参数的构造方法
                        --> 是为了在子类初始化之前,完成父类数据的初始化
                其实,在每一个构造方法的第一条语句默认都是:super()  Object为所有类的父类
               
        如果子类没有无参构造方法怎么办?  -->  调用父类的有参构造
                                ①通过super(..)调用父类的有参构造
                                ②通过this(..)调用本类的其他构造方法,间接的进行父类的初始化
                注意事项: super() 与 this()  必须出现在构造方法的第一条语句上,也就是说,不能共存

[Java] 纯文本查看 复制代码
class Demo_Student {
	public static void main(String[] args) {
		Student s = new Student("hello",23);
		System.out.println(s.getName()+".."+s.getAge());
		s.eat();
		s.study();
	}
}

class Person {
	private String name ;
	private int age;

	public Person(){}

	public Person(String name, int age){
		this.name = name;
		this.age = age;
	}

	public String getName(){
		return name;
	}

	public void setName(String name){
		this.name = name;
	}

	public int getAge(){
		return age;
	}

	public void setAge(int age){
		this.age = age;
	}

	public void eat(){
		System.out.println("吃饭吃饭");
	}
}

class Student extends Person{
	public Student(){}

	public Student(String name,int age){
		super(name,age);
	}

	public void eat(){
		System.out.println("学生吃饭");
	}

	public void study(){
		System.out.println("学生学习");
	}
}




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马