【Java】继承

继承

是类与类的一种关系, “is  a”,只有一个父类

子类拥有父类的所有属性和方法,除了private,实现代码复用, class 子类 extends 父类 { ... }

● 方法重写
如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法。
语法规则:
a.返回值类型	b.方法名	c.参数类型及个数
都要与父类继承的方法相同,才叫方法的重写
package com.demo;

public class Animal {
	public int age;
	public String name;
/**Viod表示空类型,它跟int,float是同地位的,一般用在没有返回值的函数中,比如你写void main (),主函数完了不用写return 语句,但是如果是int main ()或者是main (),你不写return 语句它就会有warning */
	public void eat(){
		System.out.println("动物具有吃东西能力");
    }
}

package com.demo;

public class Animal {
	public int age;
	public String name;
	public void eat(){
		System.out.println("动物具有吃东西能力");
    }
}

package com.demo;

public class Dog extends Animal {
	public void eat(){
		System.out.println("年龄:" + age + "狗具有吃东西能力");
	}
}

子类对父类方法的重写必须具有相同的方法名称,参数列表和返回值类型的,只有访问权限是不能比原方法更严格。

方法的组成:修饰符+返回值+方法名+(参数列表)+{方法体}

重写:返回值和方法名及参数列表相同,方法体不同;

重载:返回值和方法名相同,参数列表不同。

●  继承的初始化顺序

父类对象->属性初始化->构造方法->子类对象->属性初始化->构造方法

●  final关键字
final: 修饰的类不允许被继承;
修饰的方法,子类不允许重写(覆盖);
修饰的属性不允许在其他位置修改值,且只能赋值一次,要么现场赋值,要么构造方法赋值,系统不会分配默认值,所以必须赋值。
修饰的变量不允许被修改值,所以可称为常量。

●  super关键字
在对象内部,可以代表父类对象
访问父类属性 super.age
访问父类方法 super.eat()
super的应用
1.子类的构造的过程当中必须调用其父类的构造方法。
2.如果子类的构造方法中没有显示的调用父类的构造方法,
则系统默认调用父类的无参构造方法。
3.如果显示的调用构造方法,必须在子类的构造方法第一行。
4.如果子类的构造方法中没有显示调用父类的构造方法,而父类没有无参构造,则变易出错。

●  Object类
Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object类。Object类中的方法,适合所有子类。
1.toString()方法 	在Object类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串)。
com.imooc.Telphone@60ec2ea8(唯一区分对象,有一个生成的规律或是算法,计算机世界里这个算法就是哈希码)可以通过重写toString()方法表示出对象的属性。
重写的方式: source->generate toString() 他就会根据我们对象的属性帮我们生成一个toString()方法来输出属性值
2.equals()方法 比较的是对象的引用是否指向同一块内存地址
要使用equals()比价值是否相同的时候,很多情况下需要重新重写equals()方法
getclass()   类对象  new一个对象得到的是类的对象
类对象obj.getClass( )  是描述的是代码信息
类的对象obj  是对象的属性值的信息(数据信息)
默认继承 Object 的 toString( ) 方法,输出对象地址
类对象和类的对象不同;类对象指的是属性;类的对象指的是值
equals()----返回值是布尔类型
比较的是对象的引用是否指向同一块内存地址-------对象实例化时,即给对象分配内存空间
使用方法如:dog.equals(dog2);
如果是两个对象,但想判断两个对象的属性是否相同,则重写equals()方法
1.地址是否相同----if (this == obj)
2.对象是否为空----if (obj == null)
3.getClass()可以得到类对象,判断类型是否一样-----if (getClass() != obj.getClass())
new出来的是类的对象,关注的是类的属性的具体的数据;
类对象是类的代码信息,关注的是类有什么属性和方法
4.属性值是否一样----if (age != other.age)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值