java面向对象之继承及关键字

一、关于Java语言当中的继承:

1、继承是面向对象三大特征之一,三大特征分别是:封装、继承、多态
2、继承基本"的作用是:代码复用。但是继承最"“重要"的作用是:有了继承才有了以后“方法的覆盖"和"多态机制”。
3、继承语法格式:
[修饰符列表] class 类名extends父类名{
类体=属性+方法

}
4、java语言当中的继承只支持单继承,一个类不能同时继承很多类,只能继承一个类。在C+ +中支持多继承。
5、关于继承中的一些术语:
B类继承A类,其中:
A类称为:父类、基类、超类、superclass
B类称为:子类、派生类、subclass
6、在java语言当中子类继承父类都继承哪些数据呢?
私有的不支持继承
构造方法不支持继承
其它数据都可以被继承
7、虽然java语言当中只支持单继承,但是一个类也可以间接继承其它类,例如:

C extends B{
B extends A{
A extends T{
		}
	}
}

C直接继承B类,但是c类间接继承T、A类。
8、java语言中假设一个类没有显示的继承任何类,该类默认继承JavaSE库当中提供的java . lang . Object类。

二、关于Java语言当中方法的覆盖:

1、方法覆盖又被称为方法重写,英语单词: override [官方的] /overwrite
2、什么时候使用方法重写?
当父类中的方法已经无法满足当前子类的业务需求,
子类有必要将父类中继承过来的方法进行重新编写,
这个重新编写的过程称为方法重写/方法覆盖。
3、什么条件满足之后,方法会发生重写呢? [代码满足什么条件之后,就构成方法的覆盖呢? ]
*方法重写发生在具有继承关系的父子类之间
*方法重写的时候: 返回值类型相同,方法名相同,形参列表相同
*方法重写的时候: 访问权限不能更低,可以更高。
*方法重写的时候: 抛出异常不能更多,可以更少。
4、建议方法重写的时候尽量复制粘贴,不要编写,容易出错,导致没有产生覆盖。
5、注意:
私有方法不能继承,所以不能覆盖。
构造方法不能继承,所以不能覆盖。
静态方法不存在覆盖。
覆盖只针对方法,不谈属性。

三、关于Java语言当中的this关键字:

1、this是一 个关键字,翻译为:这个
2、this是一个引用,this是一个变量, this变量中保存了内存地址指向了自身,this存储在JVM堆内存java对象内部。
3、创建100个java对象,每一个对象都有 this,也就说有100个不同的this
4、this可以出现在’'实例方法"当中,this指向当前正在执行这个动作的对象。( this代表当前对象)
5、this在多数情况下都是可以省略不写的
6、this不能使用在带有static的方法当中

四、关于Java语言中的abstract(翻译为:抽象的)关键字

1、使用abstract关键字修饰没有方法体的方法我们称之为:抽象方法

2、使用abstract关键字修饰的类我们称之为抽象类

	// 抽象类
public abstract class Person {
	// 使用abstract关键字修饰没有方法体的方法我们称之为:抽象方法
	public abstract void eat();
}

3、注意:

  • 具备抽象方法的类必须是抽象类;
  • 但是抽象类不一定必须有抽象方法;
	// 抽象类不一定必须要有抽象方法
	public abstract class Person01 {
    // 以下方法不是抽象方法
		public void eat() {
			System.out.println("贫者不受嗟来之食");
	}
}	

五、关于Java语言中的final(翻译为:最终的)关键字

  • 使用final关键字修饰的父类不能被继承
  • 使用final关键字修饰的方法不能被重写

六、关于Java语言中的super关键字

/**
* Male是子类继承父类Person
*/
public class Male extends Person{
    //无参构造方法
	public Male() {
	}
    //有参构造方法
	public Male(String name, int age, int sex) {
		//super的作用是调用父类的方法
		super.setAge(age);
		super.setName(name);
		super.setSex(sex);
		System.out.println("窈窕淑女,君子好逑");
	}
}

测试:

@Test
public void test02() {
		Male male = new Male("张三",18,1);
		System.out.println("张三的年龄是>>>" + male.getAge());
		System.out.println("张三的名字是>>>" + male.getName());
		System.out.println("张三的性别是>>>" + (male.getSex() == 1? "男" : "女"));
		System.out.println("********************************");
}

测试结果:

窈窕淑女,君子好逑
张三的年龄是>>>18
张三的名字是>>>张三
张三的性别是>>>********************************

你可能感兴趣的:(eclipse,java,maven)