Java笔记(继承、supper、方法重载、方法重写、Object 类)

本文介绍了Java中的面向对象特性,包括继承(子类继承父类属性和方法)、super关键字的使用(调用父类构造器和方法)、方法重载(同一类中多个同名但参数不同的方法)以及方法重写(子类覆盖父类方法)。通过这些概念,可以实现代码复用、接口定制和多态性。同时,还提及了Object类作为所有类的基类,包含的一些基本方法如toString()、hashCode()等。
摘要由CSDN通过智能技术生成
/**
 * 继承
 * supper
 * 方法重载
 * 方法重写
 * Object 类
 */



1.继承(extends)
	子类拥有父类的所有非私有属性与方法(不包括构造方法)
	//父类
	public class Animal {

		private String name;
		public int age;
	
		public void eat() {
			System.out.println("吃东西");
		}
	}
	//子类
	public class Dog extends Animal{

	}
	
	public class Test {

	public static void main(String[] args) {
		//创建 Dog 类的实例(里面什么属性方法都没写)
		Dog d = new Dog();
		d.eat();
		int age = d.age;
		
		//Dog 类为什么会有 Animal 类的方法与属性?
		//因为它继承(extends)于 Animal 类,所以拥有父类(Animal)的所有非私有属性与方法(不包含构造方法)
		
	}
	
	问题:为什么要继承?
		代码复用,定义一个方法或属性,重复使用

2. supper
	2.1 super()
		调用父类的构造方法,不写也默认存在,只能出现在子类的构造方法第一行
		如果父类中只有一个有参的构造方法,那么子类需要把构造方法写出来并给父类的构造方法传参

	2.2 super.方法名
		调用父类的方法

3.方法重载(Overload)
	一个类中,多个方法重名,但参数列表不同(参数个数、参数类型、参数顺序不同,与返回值无关)

	public void getMessage() {
		
	}
	
//	public int getMessage() {
//		return 1;		//与返回值没有关系
//	}
	
	public void getMessage(String name) {
		
	}
	
	public void getMessage(String name, int age) {
		
	}
	
	public void getMessage(int age, String name) {
		
	}

	问题:为什么要重载?
		不用过多的取方法名

4.方法重写/覆盖(Override)
	子类当中有一个方法与父类中方法一样(返回值类型,参数列表(参数个数,参数类型,参数顺序)一样)
	子类的修饰符要 >= 父类的修饰符访问权限

	//父类
	public class Animal {

		protected void eat() {
			System.out.println("吃东西");

		}
	
	}

	//子类
	public class Cat extends Animal{
	
		@Override
		public void eat() {
			System.out.println("吃猫粮");
		}
	
	}
	
	//测试类
	public class Test {

		public static void main(String[] args) {
		
			Cat c = new Cat();
			//调用的是子类重写之后的 eat() 方法,而不是父类的 eat() 方法
			c.eat();	//吃猫粮
		}
	}

	问题:为什么要重写?
		因为父类的方法没有满足子类的要求

5.Object类(所有类的父类)
	public class Test extends Object{
		// Object 类是所有类的父类
	
		//垃圾回收方法
		@Override
		protected void finalize() throws Throwable {
			super.finalize();
		}
	
		//默认打印当前对象在内存中的地址
		@Override
		public String toString() {
			return super.toString();
		}
	
		//克隆一个相同的对象
		@Override
		protected Object clone() throws CloneNotSupportedException {
			return super.clone();
		}
	
		//打印当前对象的哈希码
		@Override
		public int hashCode() {
			return super.hashCode();
		}
	
		//对比两个对象是不是一个对象
		@Override
		public boolean equals(Object obj) {
			return super.equals(obj);
		}
		
		//........
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值