java笔记__面向对象04_继承_关键字super

继承(extend)

一.理解继承的作用**

继承是Java中实现代码重用的重要手段之一,也是面向对象的三大特性之一。

在两个类实现了继承之后,会产生子类和父类的概念,而子类可以拥有父类中的属性和方法,子类还可以对这些方法进行重写。

Java 中继承是根继承,一个类有且仅有一个亲爹。

二.掌握继承的基本使用**

1、将多个类(子类)抽取公共代码(属性,方法)到父类中。

public class pet{
	// 公共代码
}

例如:
/* 狗类 */
public class Dog{
    private String name;
    private int health;
    private int love;
    private String strain;
    
    public void print(){
        syso(name health  love);
    }
}
/* 猫类 */
public class Cat{
    private String name;
    private int health;
    private int love;
    private char gender;
    
    public void print(){
        syso(name health  love);
    }
}
/* 狗类和猫类共有的属性,
   这些属性可以抽调出来建立一个宠物类(父类)*/
 private String name;
    private int health;
    private int love;

2、使用子类去继承父类,即可拥有父类中的公共代码

public class Dog extends Pet{
    // 自己特有的
    // 继承了父类中公共的
}

继承注意事项:

1、子类和父类之间要有is a的关系。

// 父类
public class Pet{
    // 公有代码
}

// 子类继承 
// 必须是在子类名后加写【extends 父类类名】extends 父类类名
public class Dog extends Pet{
    // 继承了公有代码
    // 特有的代码
}

2、子类不是无限继承父类中的内容,它只能继承父类中非私有化(非private修饰符)的代码,也不能继承构造方法,也不能继承不同包中,默认修饰的内容。

只能继承父类中非私有(非private修饰符)的代码:private修饰的内容是私有的,只能在本类中使用。

使用方法:给父类中的所有类声明提供 一对getxxx与setxxx方法。如下

/*1、定义动物类,有名称和年龄两个属性,且属性私有化,提供相应的getxxx与setxxx方法。
*/
public class Animal { // Animal 就是父类
	
	private String name;// 类声明
	private int age;// 类声明
	
    // 关键字 super
	public Animal() {
		super();	
	}
    // getName和setName
    // 就是name获取的一对getxxx与setxxx方法
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
    // 同理Age的一对getxxx与setxxx方法
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
    //无参有返的方法
	public String animal() {
		System.out.println("吃饭");
		// 必须使用return来返回值
        return("吃饭");
	}
	
	public void animal1() {
		System.out.println("动物自白:\n我的字:"+getName()+"\t我的年龄:"+getAge());		
	}
}
/*1、定义测试类,创建狗对象,并给父类对象中的名称和年龄属性赋值
5、使用狗对象获取名称和年龄的属性值并打印在控制台上
6、使用狗对象调用吃饭方法*/
public class Animal2 {

	public static void main(String[] args) {
		Dog dog = new Dog();
		dog.setName("金毛");
		dog.setAge(6);    
		dog.animal1();
        // 狗对象调用吃饭方法
		dog.animal();

不能继承构造方法:构造方法是用来初始化对象(对象创建),它是给父类创建对象用的。

不能继承不同包中,默认修饰的内容。

1554775364855

三.掌握super关键字的使用

类似与this ,this表示当前类的某个对象,谁在调用谁就是当前对象。

super表示当前类的父类的对象

this可以调用自己的属性(this.XX)、自己的方法(this.XXX())、自己的构造(this())。

super可以调用父类的属性(super.XXX)、父类的方法(super.XX())、父类的构造(super())。

this和super在构造中调用其他构造时,只能出现在有效代码的第一行。

子类继承父类之后,子类的构造方法中会自动添加父类构造的调用代码。

/* super调用构造方法 */
public Dog(){
    super();// super只能出现在有效代码的第一行
}
4.继承之后 加载顺序

父类静态代码块 、 父类构造代码块、父类的构造方法、子类的静态代码块、子类的构造代码块、子类的构造方法

父类静态代码块 -> 子类的静态代码块 -> 【 父类的构造代码块 -> 父类的构造方法 -> 子类的构造代码块 -> 子类的构造方法 】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值