• 继承 多态 封装


    1.继承用单词extends。一般子类可以继承父类的方法和属性,但是私有的能继承,但子类不能使用,在子类访问父类的构造方法需要用到super关键字,一般super放在mian方法的第一行,并且只要继承,系统会默认调用父类的无参构造方法。并且如果是连续继承,无参构造方法会从最上面层的父类开始调用。如果调用本类的方法,则使用this关键字。

    2.多态,指的是多种形式。它使用不同的实例而执行不同的操作。多态包括方法的重写和方法的重载,方法的重写是使用继承时对父类的方法进行重写,比如形状有绘图的方法,在其子类三角形和正方形中。有绘图的方法,所以在其子类中对方法进行重写,使其绘制不同的图形,方法的重写会覆盖父类的方法,在子类调用重写的方法会默认为子类重写的方法,而不会调用父类的方法。方法之间可以互相调用。而方法的重载,是在同一个类中对同一个方法,但是参数不同的方法进行重写,这两个概念不要混淆。方法的调用遵循就近原则。

     3,程序中只有类,属性,和方法,所以修饰符就是修饰这三个,访问修饰符表示一种权限,访问修饰符有pravate(私有的)只有该类可以访问、protect(保护的)只有该类及其子类的成员可以访问,同一个包中的类也可以访问,public(公共的)该类或者非该类均可以访问,默认(相同数据包中的类可以访问)。类一般使用公共的。构造方法一般在单例模式下使用私有的。否则使用共有的。

    4.

    定义人类Person, (1)     字段:身份证号idCard,姓名name,性别gender,年龄age,职业profession,联系方式phone。           并定义相应的属性; (2)     定义函数message()输出个人的基本信息 (3)     定义默认的构造函数,并打印一句话,输出“我是人类”。

    定义一个教师类Teacher,派生于人类; (a)     具有字段:职工号wordID,所教授的课程名curriculum ,所属院系academy,并定义相应的属性 (b)     重写构造函数。 (c)     定义一个普通方法teach(),输出我是教学的。

    ----------- 定义一个数学教师类MathTeacher,派生于教师类;  (a)重写父类的teach();输出我是从事数学教学的。  (b)重写默认构造函数。再写一个带参数的构成函数 MathTeacher(String name)  (c)有两个重载方法,ready(),ready(String scource);

    定义一个英语教师类EnglishTeacher,派生于教师类;  (a)重写父类的teach();输出我是从事英语教学的。  (b)重写默认构造函数。再写一个带参数的构成函数 EnglishTeacher(String name),并显示的调用父类的构成方法  (c)有两个重载方法,write(),write(String scource);

    package com.pojo;
    
    public class Person {
        public long IdCard;
        public String name;
        public boolean gender;
        public int age;
        public String profession;
        public String  phone;
        public void message(){
            System.out.println("输出个人基本信息");
        }
        public Person(){
            System.out.println("我是人类");
        }
        public static void main(String []args){
            MathTeacher mathTeacher=new MathTeacher("zhangsan");
            System.out.println("个人基本信息");
        }
    }    
    class Teacher extends Person{
        public String wordID;
        public String curriculum;
        public String academy;
        public Teacher(){
            this.name="王麻子";
            this.IdCard=12;
            this.gender=true;
            this.age=35;
            this.profession="英语教师";
            this.phone="13532452473";
            System.out.println("我是教师");
        }
        public void teach(){
            System.out.println("我是教学的");
        }
    }
    class MathTeacher extends Teacher{
        public void teach(){
            System.out.println("我是从实输血教学的");
        }
        public MathTeacher(String name){
            this.name=name;
            this.IdCard=12;
            this.gender=false;
            this.age=45;
            this.profession="数学教师";
            this.phone="12354452473";
            System.out.println(name+IdCard+gender+age+profession+phone);
        }
        public void ready(){
            System.out.println("我在教学生读");
        }
        public void ready(String scource){
            System.out.println("在教一个学生");
        }
    }
    class EnglishTeacher extends Teacher{
        public void teach(){
            System.out.println("我是从事英语教学的");
        }
        public EnglishTeacher(){
            System.out.println("卧室英语教师");
        }
        public EnglishTeacher(String name){
            this.name="李四";
            System.out.println("我是李思老师");
        }
        public void write(){
            System.out.println("我在教学生们写");
        }
        public void write(String scource){
            System.out.println("我在教一个学生写");
        }
    }

    5,方法修饰符有static(静态的,不能修饰类。可以修饰属性和方法)。作用:用static修饰的属性在内存中会占用固定的内存空间。不会隶属任何一个实例对象。所有的实例对象都共享这个变量,类似全局变量,比较节省内存,但是这个内存空间要在程序执行完了之后才会消失,。一般静态变量都使用类名访问,不使用对象去访问。使用类名去访问是因为静态的是共享的,static也可以修饰方法,叫静态方法,静态方法只能访问静态变量,直接使用类名访问,还可以修饰一段代码static{ . 。 。 。 。},让他是静态的,称为语句块,这个静态语句块会比main运行之前运行,但是只会运行一次。 final(最终的),不可改变的,修饰类,属性,方法,不能用类名访问,只能访问,不能修改,修饰方法的特点:不能用类名直接访问,一般和普通方法没什么区别,但是只对子类有用,子类继承的时候不能重写父类的方法。修饰类的时候,该类不可以被继承。俗称太监类。; 常量一般使用全大写,属性首字母小写,驼峰式命名,这是命名规范。  abstract(抽象的)对类抽象,说明该类不可以被new,一般具有抽象的类就用该关键字来修饰,防止被抽象化的类被实例化,因为抽象没有意义,如人类。方法也可以别抽象化,如果一个方法必须要子类实现,就要把该方法抽象定义为一个抽象方法。抽象方法没有方法体。

    6.接口(interface).接口就是某个事物对外提供的一些功能的说明。可以利用接口实现多态,同时接口也弥补了java单一继承的弱点。接口使用interface关键字定义接口,一般使用接口声明方法或常量,接口中的方法只能是声明,不能是具体的实现(就是没有方法体)。实现接口用关键字implements  .实现就一定要实现接口的方法和常量,接口可以实现多个,一个类实现一个接口或者多个接口,并且还可以继承其他类。

    7.

    1、定义抽象类员工Employee, (1)     保护字段:姓名name,性别gender,年龄age等基本属性。 (2)     定义抽象方法函数getsalary()表示领工资的操作 (3)     定义普通函数whoami()输出 :我是+姓名 (4)     拥有(姓名name,性别gender)参数的构造函数 (5)     使用常量定义员工的三个状态:离职=0;在职=1;试用期=2

    定义一个经理类Manager 派生于员工; (a)     除了有员工等基本属性外,还有岗位级别 gree私有属性 (b)     经理领7000元工资,打印并输出工资。 (c)     重写父类的whoami(),调用父类的whoami()方法,再输出:我是一名经理。

    定义一个会计类Technician,派生于员工类;  (a)除了有员工等基本属性外,还有会计等级 rating私有属性  (b)会计领3000元工资,打印并输出工资。  (c)重写父类的whoami(),调用父类的whoami()方法,再输出:我是一名会计。

    public abstract class Employee {
        private String name;
        private int age;
        public abstract void getsalary();
        public void whoami() {
            System.out.println("我是:"+name+age);
        }
        public Employee(String name,int age){
            
        }
        int ZTLZ=0;
        int ZTZZ=1;
        int ZTSY=2;
    }
    class Manager extends Employee{
        public Manager(String name, int age) {
            super(name, age);
            // TODO Auto-generated constructor stub
        }
        private int gree;
        public  void getsalary(){
            System.out.println("领工资:7000");
        }
        public void whoami(){
            System.out.println("我是一名经理"+gree);
            
        }
        
    }
    class Technician extends Employee{
        public Technician(String name, int age) {
            super(name, age);
            
            // TODO Auto-generated constructor stub
        }
        public void getsalary(){
            System.out.println("会计领取工资3000元");
        }
        public void whoami(){
            System.out.println("我是一名会计"+rating);
        }
    
        private int rating;
    }

     8.

    2、、定义一个计算器接口Cal    有一个方法:int opetator(int a,int b);

    定义一个类Add实现这个接口,计算两个数的和

    定义一个类Mul实现这个接口,计算两个数的积

    定义一个类Mod实现这个接口,计算两个数的模

     写一个Run类,测试运行

    public class Run {
        public static void main(String[]args){
            int a=4;
            int b=2;
            Cal cal=new Mul();
            int jieguo=cal.opetator(a, b);
            System.out.println(jieguo);
        }
    
        
    
    }
    public interface Cal {
        int opetator(int a,int b);
    
    }
    class Add implements Cal{
    
        @Override
        public int opetator(int a, int b) {
            // TODO Auto-generated method stub
            return a+b;
        }
        
    }
    class Mul implements Cal{
    
        @Override
        public int opetator(int a, int b) {
            // TODO Auto-generated method stub
            return a*b;
        }
        
    }
    class Mod implements Cal{
    
        @Override
        public int opetator(int a, int b) {
            // TODO Auto-generated method stub
            return a/b;
        }
        
    }
  • 相关阅读:
    Netsharp下微信菜单以及OAuth
    权限管理
    java面向对象基础(转)
    闲来无事做了一个批处理的win10账号管理
    bat获取系统时间修改系统密码
    bat常用命令
    bat修改密码
    vbs的一些入门基础。。。
    WCF 之 DataContract
    WCF 之 OperationContract
  • 原文地址:https://www.cnblogs.com/tangdeqiang/p/7580813.html
Copyright © 2020-2023  润新知