Javaee之【继承】
Javaee之【finial关键字】
Javaee之【static关键字】
继承
继承简介: 继承是类使用的集中体现,例如:有一个学生类,教师类在这种情况下可以有一个人类,把学生类和教师类继承人类,把学生类和教师类都有的属性放到Person类里面,这样就可以节省许多的代码编写,
再如:有猫,狗,等等一些动物可以写一个动物类,让这些动物来继承这个动物类实现继承
子类继承父类子类可有有自己的方法
继承使用的关键字extends
使用示例01:
新手机类继承了手机类,它具有了手机类的功能;
手机类(被继承)成为父类,新手机类(主动继承)成为子类
手机类
public class Phone {
public void call(String name){
System.out.println("给"+name+"打电话");
}
}
新手机
public class NewPhone extends Phone{
//方法重写,,和父类拥有相同功能,但是又有自己独有的功能用到了方法重写
//和父类有一样的方法名实现方法重写
@Override//帮助检验方法重写的时候是否出错
public void call(String name){
System.out.println("打开视频通话");
// System.out.println("给"+name+"打电话");
super.call(name);
}
}
测试类
public class PhoneDemo {
public static void main(String[] args) {
Phone p = new Phone();
p.call("张飞");
System.out.println("-----------------");
NewPhone np = new NewPhone();
np.call("张飞");
}
}
使用示例02:
学生类和老师类继承人类
人类:
public class Person {
private String name;
private String age;
public Person() {
}
public Person(String name, String age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
学生类:
public class Student extends Person{
public Student() {
}
public Student(String name, String age) {
//使用父类的方法定义姓名和年龄
super(name, age);
}
public void study(){
System.out.println("好好学习天天向上");
}
}
教师类:
public class Teacher extends Person{
public Teacher() {
}
public Teacher(String name, String age) {
super(name, age);
}
public void teach(){
System.out.println("用爱教会每一位学生");
}
}
测试类:
public class PersonDemo {
public static void main(String[] args) {
Teacher tea1 = new Teacher();
tea1.setName("林青霞");
tea1.setAge("23");
System.out.println(tea1.getName()+","+tea1.getAge());
tea1.teach();
Teacher tea2 = new Teacher("风清扬","20");
System.out.println(tea2.getName()+","+tea2.getAge());
tea2.teach();
Student stu1 = new Student();
stu1.setName("李华");
stu1.setAge("22");
System.out.println(stu1.getName()+","+stu1.getAge());
stu1.study();
Student stu2 = new Student("黎明","22");
System.out.println(stu2.getName()+","+stu2.getAge());
stu2.study();
}
}
finial关键字
finial使用: 被finial修饰的方法也不能再被重写 finial使用示例01:父类:
public class Fu {
/*public final void method(){
System.out.println("父类method方法被调用");
}*/
public void method() {
System.out.println("父类method方法被调用");
}
}
子类:
public class Zi extends Fu{
private int age=23;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public final void method(){
//被final修饰的不能被再次重写或者赋值
// age = 23;
System.out.println("子类method被调用");
}
}
测试类:
public class Demo {
public static void main(String[] args) {
Zi z = new Zi();
z.method();
z.setAge(12);
System.out.println(z.getAge());
}
}
static关键字
被static修饰的变量可以看成是一个常量,不能被改变例如:
在记录一个学校学生的时候,学生的姓名,性别,年龄,学号不同但是学校是相同的,所以将这个变量用静态修饰之后,只需要赋值一次即可,以后都是一样的;
另外:
静态方法只能访问静态方法
静态方法只能访问静态成员变量
使用示例:
Student类:
public class Student {
public String name;
public String age;
//static修饰的变量表示不会改变的量
public static String university;
public void show(){
System.out.println(name+","+age+","+university);
}
public void show1(){
}
public static void show2(){
}
public void show3(){
show1();
show2();
}
//------------------------------
//静态方法只能访问静态方法
//静态方法只能访问静态成员变量
//------------------------------
public static void show4(){
show2();
}
}
测试类:
public class StaticDemo {
public static void main(String[] args) {
//静态常量直接赋值
Student.university = "计算机大学";
Student s1= new Student();
s1.name = "林青霞";
s1.age = "23";
s1.show();
Student s2 =new Student();
s2.name = "风清扬";
s2.age = "23";
s2.show();
}
}