栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java封装、继承、多态

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java封装、继承、多态

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

目录

文章目录

前言

一、封装

二、继承

三、多态

总结



前言


一、封装

private 将定义方法私有化,需要get/set操作 get是获取值 ,set是设置值

也没有很复杂只是给类或方法上了个锁,最后在用钥匙打开就好了

eg:

//定义一个学生类
package OOP.demo3;

public class Demo3 {
    
    //属性私有化
    private String name;
    private int id;
    private char sex;
//相当于解锁了之前的name
    public String getName() {
        return name;
    }
//设置name
    public void setName(String name) {
        this.name = name;
    }
}
//调用学生类的主方法
package OOP.demo3;

public class Demo {
    public static void main(String[] args) {
        Demo3 demo3 = new Demo3();
        demo3.setName("mxx");
        System.out.println( demo3.getName());
    }
}

 快捷键alt +insert 快速生成get和set方法

二、继承
package OOP.demo4;

import static OOP.demo4.Demo.sss;

//主方法
public class master {
    public static void main(String[] args) {
        Demo1 demo1 = new Demo1();
        Demo demo11 = new Demo();

        System.out.println(sss(10,15));



    }
}
//父类
package OOP.demo4;

public class Demo {
    public void speak(){
        System.out.println("口你急哇");

    }

    public static int sss(int a,int b){

        return a +b;
    }
}
//子类
package OOP.demo4;

public class Demo1 extends Demo{

}

---------------------------------------------------------------------------

super方法: 

//父类
package OOP.demo4;

public class Demo {
   protected String name ="mxx";

   public void prints(){
      System.out.println("human");
   }
}
package OOP.demo4;

public class Demo1 extends Demo{

   private String name = "mxx1";
   public void prints(){
       System.out.println("huamnes");
   }
    public void test1(){
        prints();//humanes
        this.prints();//humanes
        super.prints();//super调用父类的方法 huamn
    }
   
}
package OOP.demo4;


//主方法
public class master {
    public static void main(String[] args) {
        Demo1 demo1 = new Demo1();
        demo1.test("mmmm");
        
    }
}

super 

1.调用父类的构造方法,而且必须在第一位的构造方法

2.必须出现在子类或构造方法

3.super和this不能同时调用构造方法

this

1.this是本身调用者的对象 2.super是代表父类对象

1.this在没有继承的情况下也可以使用 2.super必须在继承的情况下使用

1.this调用本类的构造方法,super调用父类的构造方法

=====================================================

方法的重写

注意事项:1.方法名必须相同 2.参数列表必须相同

3.修饰符;范围可以扩大但不能缩小  public>protected>Default>private

4.抛出异常:范围,可以被缩小,但不能扩大;

package OOP.demo4;


//主方法
public class master {
    public static void main(String[] args) {

        //父类的引用的指向子类
        A a = new A();//静态方法只调用和左边有关的“A”,
        a.wxw1();
        B b =new A();//非静态方法并且子类重写父类的方法,A重写B的方法
        b.wxw1();
    }
}
package OOP.demo4;

public class B {
    public void wxw1(){
        System.out.println("wxw1=======<");
    }
}
package OOP.demo4;

public class A extends B{
    @Override //重写
    public void wxw1() {
        System.out.println("wxw2=======>");

    }
}

三、多态

instanceof 

package OOP.demo4;


import OOP.demo.Application;

//主方法
public class master {
    public static void main(String[] args) {
 //instanceof是一个二元运算符,左边是对象右边类,判断是不是右边类或子类创建的,是的话返回TRUE,否则false
        System.out.println(object instanceof B);//true
        System.out.println(object instanceof A);//false
        System.out.println(object instanceof Object);//true
        System.out.println(object instanceof Application);//false
        System.out.println("=====================================");
        B b = new B();
        System.out.println(b instanceof B);//true
        System.out.println(b instanceof Object);//true
        System.out.println(b instanceof A);//false
        //System.out.println(b instanceof Demo );//报错,因为没有两者间关系
    }
}

 父子级之间存在转换关系

package OOP.demo4;

//主方法
public class master {
    public static void main(String[] args) {
 
*/
           //类型之间的转换  父转子,不需要强转,子转父需要转换
        
        B b = new A();
        b.go();//go
        A C = (A) b;
        C.walk();//walk
        C.go();//go
    }
}
package OOP.demo4;

public class B {
    public void go(){
        System.out.println("go");
    }
}
package OOP.demo4;

public class A extends B{

    public void walk() {
        System.out.println("walk");

    }
}

 /*Ctrl + H 查看父子级关系,(要在父类上查看)

 --如果子类没有继承父类,会默认继承一个Object的类


总结

Java三大特征有些抽象,需要慢慢结合代码理解

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1032773.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号