java基础内容笔记--继承(2)

【注意,本人小白一个,以下是个人根据教程的理解,如有疑惑,出错的地方,希望大家能够留言指出来,相互学习进步。】

多态与动态绑定

       根据教程内容的介绍,多态是:多态是指同一个方法根据上下文使用不同的定义的能力。之前讲过的方法覆写以及前面的方法重载都可被看做是多态。教程中多态的学习是要和动态绑定一起的,动态绑定是一种机制,教程中是这样说的:“对一个已经被重写的方法的调用将会发生在运行时,而不是在编译时解析。”其实在这里看到的教程介绍不是很明白,也很模糊,于是在网上寻找,看到知乎有个关于多态的讨论,里面的答案很清晰明白,因为介绍多态的内容很多,知乎又是很注重版权的,(没有想过直接复制粘贴这种流氓盗版行为),刚开始想申请版权转载,但是好的内容太多了,一个一个去申请版权转载有些繁琐,所以这里给出链接,可以去看看。真的这个问题讨论的不错,很容易理解。

链接:JAVA的多态用几句话能直观的解释一下吗?

真的很棒,很容易理解,忍不住再说一次。

final关键字

教程中说到final关键字的使用是然修饰的类不能被继承,但是没有说明是为什么,再查询网上的一些资料看过后,个人理解是处于安全考虑,或者被修饰的类不想被继承,所以用final来修饰,第一个解答还明白为什么,但是第二个就有点蒙了,也就只能当做了解一下了,还有,被final修饰的类里面的成员方法默认也是被修饰的为final方法的。从这里也就是能知道,final也是能修饰方法的,也就是说这个方法不能被重载了。

final除了能修饰类、方法之外,最多出现的是修饰变量,而修饰的变量有个特点,一旦初始化,这个变量就不能被改变了。

final修饰类的格式:

final class 类名 extends 父类{
//类体

final修饰方法格式:

修饰符 final 返回值类型 方法名(){
//方法体
}
public final void run(){
//方法体
}

(final内容参考与:浅谈Java中的final关键字

抽象类

根据教程上的介绍,抽象类给我的感觉是说话不做事的,他是叫其他人做事情的,官方的介绍是:“抽象类是指在类中定义方法,但是并不去实现它,而在它的子类中去具体的实现。”

抽象类的定义:

定义抽象类是通过关键字“abstract”

修饰符 abstract 类名{
//类体
}

除了类,还可以定义抽象方法:

修饰符 abstract 返回值类型 方法名();

有个注意事项:在抽象类中的方法不一定是抽象方法,但是含有抽象方法的类,一定是抽象类。

例子:

//抽象类的声明
abstract class Animal {
	String type;
	String name;
	int age;
	int weight;

	void eat() {
		System.out.println("动物爱吃饭");
	}

	abstract void breath();

	void sleep() {
		System.out.println("动物在睡觉");
	}
}

// Tiger 继承抽象类 Animal
class Tiger extends Animal {
	String tigerType;
	String from;

	void tigerRun() {
		System.out.println("老虎在奔跑");
	}

	void breath() {
		System.out.println("老虎是用肺呼吸的");
	}
}

class Fish extends Animal {
	String fishType;

	void swim() {
		System.out.println("鱼在游泳");
	}

	void breath() {
		System.out.println("鱼是用腮呼吸的");
	}
}

// 通过该类演示对象的构造过程
public class TigerDemo {
	public static void main(String[] args) {
		Animal animal1 = new Fish();
		animal1.breath();
		Animal animal2 = new Tiger();
		animal2.breath();

	}
}

运行结果:

鱼是用腮呼吸的

老虎是用肺呼吸的

个人感觉和多态类似(应该是多态吧),这里要注意,不能直接调用子类的方法,要转换类型成子类本身才能调用子类的方法。

((Fish) animal1).swim();
((Tiger) animal2).tigerRun();

Object类

在教程中,说了一种类,这个类是全部类的“爸爸”,这个类是“Object类”。如果定义了一个类,而这个类没有去继承其他的类,那么,这个类将会默认的继承Object类,从而继承它里面的方法,但是如果一个类继承了一个父类,那这个父类没有继承其他的父类的话,这个父类就会默认继承Object类,总而言之,是个类,就会继承Object类。

object类中有一些常用的方法,分别是toString()、equals(),这两个很常用,

toString()是取得对象信息的方法、equals()是比较两个对象是否相等

在教程中看到的介绍不是很容易理解,再网上看到一个博客中写得清楚,地址:Object类及其常用方法简介

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值