oop---继承(extends+关键字super、this)

面向对象特征:继承

方法的重写(Override)

四种访问权限修饰符

关键字super

子类对象实例化过程

Object类、包装类

/*
 * oop 特征二:继承性
 * 1.为什么要设计继承性?
 * 2.class A extends B 实现类的继承
 * 		子类:A 父类(基类、SuperClass):B
 * 
 * 3.子类继承父类以后,父类中声明的属性、方法(子类获取到父类的属性name,age但是不能用因为权限限制)
 * 		明确:父类中有私有的属性或方法时,子类同样可以获取到,只是由于封装性,子类无法直接调用
 * 		子类除了通过继承获取父类的结构,还可以自己定义自己的结构
 * 
 * extends: 子类是对父类功能的”扩展“,子类不是父类的子集;
 * 
 * 4.Java的继承只能单继承!一个类只能继承一个类。一个父类可以有多个子类
 * 5.子类和父类时相对概念
 */
public class TestExdents {
	public static void main(String[] args) {
		Student s = new Student();
		s.eat();
		Student  s1 = new Student("PerkingUnivercity");
		System.out.println(s1.getName()+s1.getAge());
		
		Worker w = new Worker();
		w.eat(); // 子类调用父类的方法
	}
}
class Student extends Person {
	/*
	 * super可以用来修饰属性、方法、构造器
	 * 1)当子类与父类中同名属性时,可以通过super.属性显式的调用 
	 * 		调用子类同名属性 this.属性
	 * 2)当子类重写父类方法 (重名的)super.方法名()
	 * 
	 * 3)super修饰构造器:通过在子类使用super(形参列表)来显示的调用指定的构造器
	 * 		>在构造器内部:“super(形参列表)”必须声明在首行
	 * 		>super 和this 只能有一个存在
	 * 		>当构造器中不显示的调用this() 或super() 默认调用的是父类空参的构造器
	 * 		>建议:设计一个类时,尽量提供一个空参的构造器
	 */	
	
	private String choolName;
	int id; //子类与父类重名id
	
	public Student() {
		super();  //只是调用父类的构造器		 
	}
	public Student (String schoolName) {
		super("李雷",23); //调用父类的方法
		this.choolName = schoolName;
		System.out.println(schoolName);
	}
	public void show() {
		System.out.println(this.id );//this.id || id 子类id
		System.out.println(super.id); // 父类id
	}
}

子类对象实例化过程

public class SubObjectInitProcess {
	public static void main(String[] args) {
		dog  d = new dog();
		d.setAge(10);
		d.setName("花花");
		d.setHostName("小明");
		System.out.println("Name: "+d.getName()+"age: "+d.getAge()+"HostName:"+d.getHostName());
	}
}
class Creator{
	private int age;

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	public Creator () {
		super();
		System.out.println("this is creator's constructor");
	}
	
	
}
class Animal extends Creator{
	private String name;

	public String getName() {
		return name;
	}

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

	public Animal() {
		super();
		System.out.println("this is Animal Constructor");
	}
	
}
class dog extends Animal{
	private String hostName;

	public String getHostName() {
		return hostName;
	}

	public void setHostName(String hostName) {
		this.hostName = hostName;
	}

	public dog() {
		super();
		System.out.println("this is dog's Contructor");
	}
	
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值