java匿名对象、extends(继承)、子类与父类、super与this关键字、抽象类

一. 匿名对象

	a. 是指没有名字的对象
		i. 有名字的
		Scanner sc = new Scanner(System.in);
		ii. 匿名对象
		new Scanner(System.in);
		如:int age = new Scanner(System.in).nextInt();
	b. 如果只使用一次,可以使用匿名对象

二. 继承(extends关键字)

	a. 继承的概念
		i. 继承:就是子类继承父类的属性和行为。
		ii. 好处:提高代码的复用性、使类与类之间产生关系。
	b. 继承的格式
		i. class 父类 {
			...
		} 
		class 子类 extends 父类{
			...
		} 
	c. 继承的案例
		i. 父类Human
		public class Human {
			private String name ;
			private int 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;
			}
		} 
		ii. 子类Teacher
		public class Teacher extends Human {
			// 工资
			private double salary ;
			// 特有方法
			public void teach(){
				System.out.println("老师在认真教技术!");
			} 
			
			public double getSalary() {
				return salary;
			} 
			
			public void setSalary(double salary) {
				this.salary = salary;
			}
		} 
	d. 子类不能继承的内容
		i. 子类不能继承父类的构造方法,因为子类有自己的构造器。
		ii. 父类私有成员,子类不能直接访问,可以通过getter|setter方法访问。
	e. 继承后的特点-成员变量
		i. 成员变量不重名
		这时的访问是没有影响的
		ii. 成员变量重名
			1) 这时的访问是有影响的(就近原则)
		iii. super访问父类成员变量
			1) super代表的是父类对象的引用,(this代表的是当前对象的引用。)
			2) 使用格式:
			Super.父类成员变量名
	f. 继承后的特点-成员方法【重点】
		i. 成员方法不重名
		这时的访问没有影响
		ii. 成员方法重名
			1) 这时的访问有影响,子类对象会优先调用自己的方法。
			2) 在子类的方法中,使用super.方法名()调用父类那个同名方法
		iii. 方法重写:子类中出现了与父类一模一样的方法时(除方法体),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。
		iv. @Override重写注解
			1) @Override:注解,重写注解校验!
			2) 这个注解标记的方法,就说明这个方法必须是重写父类的方法,否则编译阶段报错。
			3) 建议重写都加上这个注解,一方面可以提高代码的可读性,一方面可以防止重写出错!
			4) 例如:
			@Override
			public void cry(){
				System.out.println("喵···");
			}
		v. 注意事项
			1) 方法重写是发生在子父类之间的关系。
			2) 子类方法覆盖父类方法,必须要保证权限大于等于父类权限。(一般情况是等于)
			3) 子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样。
	g. 继承后的特点-构造器
		i. 继承后子类构造器特点:子类所有构造器的第一行都会先调用父类的无参构造器,再执行自己。
		ii. 子类构造器的第一行都隐含了一个super()去调用父类无参数构造器,super()可以省略不写。
	h. super与this的用法
		i. this.成员变量
		super.成员变量
		this.成员方法
		super.成员方法
		ii. 调用构造器
		this(…)调用本类的其它构造器
		super(…)调用父类的其它构造器
		iii. 小结
			1) 子类的每个构造方法中均有默认的super(),调用父类的空参构造。手动调用父类构造会覆盖默认的
			super()。
			2) Super() 和 this() 都必须是在构造方法的第一行,所以不能同时出现。
			3) super(..)和this(...)是根据参数去确定调用父类哪个构造器的。
			4) super(..)可以调用父类构造器,初始化继承自父类的成员变量的数据。
			5) this(..)可以调用本类中的其他构造器。
		iv. 继承的特点
			1) java只能单继承,不支持多继承。
			2) 一个类可以有多个子类。
			3) 可以多层继承。

三. 抽象类

	a. 抽象方法
	修饰符 abstract 返回值类型 方法名 (参数列表);
	b. 抽象类
		i. 格式
		abstract class 类名字 {
		}
		ii. 例如:
		public abstract class Animal {
			public abstract void run();
		}
	c. 抽象类的特征和注意事项
		i. 特征:
		• 得:抽象类具备了含有抽象方法的能力。
		• 失:失去创建对象的能力。
		ii. 注意事项
			1) 抽象类不能创建对象(Java规定的!!)
			2) 抽象类是有构造方法的,用于初始化类的成员变量
			3) 抽象类中不一定有抽象方法,但是含有抽象方法的类一定是抽象类(一般来说抽象类中是有抽象方法)
			4) 抽象类的子类必须重写抽象类的所有抽象方法,否则子类还是一个抽象类
			5) 抽象类的天生作用就是做父类,为子类提供模板(存在的意义)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值