zoukankan      html  css  js  c++  java
  • Java之类的继承

    说起来Java的类,不得不说以下几个方面:继承、转型、重写、多态和接口。

    今天来说一说继承,转型和重写几个方面:

    继承(extends)即子类继承父类,就好比玻璃杯、保温杯等子类继承了杯子这个父类,子类具有父类的属性和方法。有一点要特别注意,Java的类是单根继承!所谓单根继承,即每个子类只能有一个父类。同时继承也实现了父类的复用性。

    之后来介绍以下,访问修饰符(限定符)即分为以下四种情况(在Java中):public; private; protected;  缺省(无限定符); 缺省以及public情况下都可以跨包(Package)访问,其他两种则会收到保护,private的属性或函数,仅可以在当前类中进行调用。

    自动转换及强制转换

    以student和person来举例子。

    public class Student extends Person{
    
        Student stu = new Student;//new表示开辟空间 以Student为对象,本身表示为Student
    
        Person stu2 = new Student;//本来stu2是个学生,但是此处是表现为Person,即自动转换
    
        Student stu3 = (Student)stu2;//表示将stu2本身的属性再表现出来,以stu3来命名,即强制转换
    }

    但是,我们要注意,强制转换的对象只有自动转化过的对象才可以!!!这里再举一个完整的例子,包含抽象类(abstract)以及接口(interface),会在以后进行说明~

    Person.java

    public interface Person {
    	//接口中属性默认为 public static final ,也只能如此
    	public static final int num = 1000;
    	//接口中方法默认为public abstract,也只能如此
    	public abstract void eat();
    	public abstract void rest();
    	
    }

    Student.java

    package com.sgf.Extends20190302;
    
    public class Students implements Person{
    	public String name;
    	//所有学生都有学习的方法
    	
    	public void study(){
    		System.out.println("Student类中学习方法,学生名字是" + name);
    	}
    	
    	public void eat(){
    		System.out.println("吃吃吃");
    	}
    	
    	public void rest(){
    		System.out.println("睡睡睡");
    	}
    	//设定学生的名字
    	public void setName(String name){
    		this.name = name;
    	}
    }
    
    
    

    UNStudent.java

    package com.sgf.Extends20190302;
    
    public class UNStudents extends Students{//子类继承父类
    	public static void main(String[] agrs ){
    		//创建大学生类的对象 学生uns 继承+特有
    		UNStudents uns = new UNStudents();
    		//调用方法 这些方法是从父类继承来的
    		uns.setName("我是大学生");
    		uns.study();
    		//大学生类特有
    		uns.cet4();
    		
    		//子类学生stu 自动转换父类 ; 
    		Students stu = new UNStudents();//子类->父类 自动转型 
    		stu.setName("我是大二的");
    		stu.study();
    		//不可用子类特有方法
    //		stu.cet4();
    		//将父类对象强制转型为子类
    		
    		//父类学生stud 强制转换为子类
    		UNStudents stud = (UNStudents)stu;
    		//强制转换后可以调用子对象方法
    		stud.cet4();
    		
    		//子类将父类方法重写 学生stu2
    		UNStudents stu2 = new UNStudents();
    		//方法
    		stu2.setName("ABC");
    		stu2.study();
    		
    		//Person
    		Person p1 = new Students();
    		p1.eat();
    		p1.rest();
    		
    	}
    	public void cet4(){
    		System.out.println("大学生需要考四级");
    	}
    	//重写父类方法
    	public void study(){
    		System.out.println(name + "要大学毕业了");
    	}
    }
    

    初入Java,恳请各位多多提点,谢谢!

  • 相关阅读:
    Centos7 定时任务
    Linux启动配置文件和运行等级runlevel
    Linux 网卡命名规则
    将博客搬至CSDN
    Lua调用C++动态链接库.so
    使用shell脚本执行批量mongosh语句
    TCP和UDP详解
    经受时延的确认(Delay ACK)
    18张图带你了解衡量网络性能的四大指标:带宽、时延、抖动、丢包
    TCP学习
  • 原文地址:https://www.cnblogs.com/Comet-Fei/p/11885229.html
Copyright © 2011-2022 走看看