首页 > 其他分享 >面向2-封装、继承、多态

面向2-封装、继承、多态

时间:2024-07-15 15:30:49浏览次数:7  
标签:封装 子类 void 多态 private 面向 println 父类 public

封装、继承、多态

继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模

extands关键字扩展

封装

/* 封装-隐藏内部信息,通过接口访问
1、“高内聚,低耦合”-该露的露,该藏得藏  属性私有,get/set
2、提高程序的安全性,保护数据
3、隐藏代码的实现细节
4、统一接口
5、提高系统的可维护性
 */
package oop;
//类 private:私有
public class B1 {
    //对于学生有 名字,学号,性别,学习方法(),睡觉方法()
    //属性私有
    private String name;
    private int id;
    private char sex;
    private int age;

    //提供一些可以操作这个属性得方法-提供一些public的get、set方法
    //get-获得这个数据,set-给这个数据设定值

    //Alt+insert也可以自动生成get和set
    public String getName(){ //getName和setName自动生成-遵守驼峰规则
        return this.name;
    }
    public void setName(String name){
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if(age<120 && age>0){
            this.age = age;
        }else{
            this.age = 3;
        }
    }
}


/*
//封装的辅助程序
//println按住加countrol  方法重载-主要看方法名和参数列表是否对应
package oop;

public class BI1 {
    public static void main(String[] args) {
        B1 b1 = new B1();
     // bi.name = "";使用得private会报红,换成public就不会
        b1.setName("小白");
        System.out.println(b1.getName());
        b1.setAge(999); //不合法的,可以在语法中辅助判断
        System.out.println(b1.getAge());
    }
}
*/

继承-extend

继承和object类

/* 继承-类跟类之间的关系(父子)  除此之外还有其他关系 object类
Control+H-打开了一个继承树
java中只有单继承,没有多继承,但可以有多个继承者
私有的东西无法被继承
在java中,所有的类都默认直接或间接继承object类
 */
package oop;
//C1 人 父类
public class C1 {
    //public-公共的,protected-受保护的,default-默认的,private-私有的 一般继承都是public,属性里才用private
    private int age = 99;
    public int money = 10_0000_0000;
    public void say(){
        System.out.println("说了一句话");
    }

}

/*
/* 辅助理解继承
1、子类继承了父类,就会拥有了父类的全部方法
 */
/* //extends
package oop;
//Student is 人 子类
public class Student extends C1 {

}
*/
package oop;

public class Application {
    public static void main(String[] args) {
        Student student = new Student();
        student.say(); //子类继承了父类,就会拥有了父类的全部方法
        System.out.println(student.money);
     //   System.out.println(student.age); //父类private,会报错
    }
}
*/

Super的定义和使用

/* super
1、super调用父类的构造方法,必须在构造方法的第一个
2、super必须只能出现在子类的方法或者构造方法中
3、super和this不能同时调用构造方法
Vs this
代表的对象不同
  this:本身调用者这个对象
  super:代表父类对象的引用
前提
   this:没有继承也可以使用
   super:只能在继承条件下才可以使用
构造方法
   this:调用本类的构造
   super:调用父类的构造
 */
/*
package oop;
//C1 人 父类
public class C1 {
    //public-公共的,protected-受保护的,default-默认的,private-私有的 一般继承都是public,属性里才用private
    protected String name = "大黑" ;
    public C1(){
        System.out.println("父类C1的无参构造器");
    }

}


*/
package oop;

public class Application {
    public static void main(String[] args) {
        Student student = new Student();
        student.test("二黄");
    }
}
/*
//super
//Control+H-打开了一个继承树
package oop;
//Student is 人 子类
public class Student extends C1 {
    public Student(){
        super();//调用父类的构造器,必须在子类构造器的第一行; 也可以不写,它自己默认调用
        System.out.println("Student的无参执行了");
    }
    private String name = "小白";
    public void test(String name){
        System.out.println(name);//二黄
        System.out.println(this.name);//小白
        System.out.println(super.name); //大黑-子类调用父类属性

    }
}

 */

Override重写的定义和使用

/* 方法重写
1、重写都是方法的重写,和属性无关
2、重写的修饰符只能说public,不能是private
重写原因
1、父类的功能子类不一定需要或不一定满足
2、Alt+Insert-override;
重写总结:
重写子类和父类的方法必须要一致,方法体不同
1、需要有继承关系,子类重写父类的  方法
2、方法名必须相同、参数列表必须相同、修饰符:范围可以扩大,但不能缩小 public》Protected》Dewault》private
3、抛出的异常范围可以被缩小,但不能扩大:Exception(大)-->ClassNotFoundException(小)
 */
package oop;

public class Application {
    //静态方法和非静态方法输出区别很大 D2会成D1
       //静态方法:方法的调用只和左边,定义的类有关
       //非静态方法:子类重写了父类的方法
    public static void main(String[] args) {
        D1 d1 = new D1();
        d1.test();

        // 父类的引用指向了子类
        D2 d2 = new D1();
        d2.test();
    }
}


/*
package oop;

public class D1 extends D2 {
    //Overrried-重写
    @Override //注解-有功能的注释!
    public void test() {
        System.out.println("D1==>test");
    }
}
/*
    public  void test() {
        System.out.println("D1==>test");
    }
 */
*/

  
  
  
/*
package oop;

public class D2 {
    public  void test(){
        System.out.println("D2==>test");
    }
}

*/

多态

/* 多态-多种方法发生方式
1、多态是方法的多态,属性没有多态
2、父类和子类的类型应该相同 ClassCastException!-类型异常报错
3、存在的条件
          继承关系
          方法需要重写,父类引用指向子类对象
          不能重写的方法 1、static 方法 属于类,不属于实列
                      2、final 常量
                      3、private 方法
*/
package oop;

public class Application {
    public static void main(String[] args) {
        //一个对象的实际类型是确定的 如:new E2();new E1();
        //但可以指向的引用类型就不确定了
        //子类能调用的方法都是自己的或继承父类
        E2 s1 = new E2();
        E2 s2 = new E2();
        //通过父类的引用指向子类
        //父类虽然可以指向子类,但不能调用子类的方法
        E1 s3 = new E2();
        //Object 默认拥有
        Object s4 = new E2();
        //子类继承了父类的全部方法,如果子类重写了父类的方法就是走子类的程序
        s3.run();
        s1.run();
        //对象能执行那些类型,主要看左边和右边关系不大
    //  s3.eat();//此行会报错,E1里没有eat;  只用通过((E2)s3).eat;进行强制转换
        s1.eat();

    }

}





/*
package oop;

public class E1 {
    public void run(){
        System.out.println("run");
    }
}
*/


/*
package oop;

public class E2 extends E1{
    public void run(){
        System.out.println("son");
    }
    public void eat(){
        System.out.println("eat");
    }
}
*/

标签:封装,子类,void,多态,private,面向,println,父类,public
From: https://www.cnblogs.com/moulixu/p/18303263

相关文章

  • 硬件开发笔记(二十六):AD21导入电感原理图库、封装库和3D模型
    前言  电阻,电容,电感还有各种基础的电子元器件、连接器和IC构成了各种实现功能的电子电路。  本篇介绍电感,并将贴片电感封装导入AD21,预览其三维模型。 贴片电感  贴片电感作为电子元件中的重要一员,因其小型化、高品质、高能量储存和低电阻等特性,在电子线路中发挥......
  • Java中的类继承与多态
    Java中的类继承与多态大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!类继承与多态的基础概念在Java编程中,类继承和多态是面向对象编程中的核心概念之一。类继承允许一个类(子类)基于另一个类(父类)来构建,并且可以继承父类的属性和方法。多态性则使得同一个......
  • ElementUI 本身没有提供年份范围选择组件,但可以通过封装两个年份选择器来实现类似的功
    ElementUI本身没有提供年份范围选择组件,但可以通过封装两个年份选择器来实现类似的功能。以下是一个使用Vue2和ElementUI实现年份范围选择器的示例代码: <script>exportdefault{name:'YearRangePicker',//接收父组件传入的年份范围数据props:{value:{......
  • java基础知识(2)—面向对象.属性和方法
    本章会引入属性和方法的基本概念。一个植物类(Plant)有很多的状态信息,如名字、话费、血量、攻击力和攻击速度等。这些植物的状态就叫做一个类的属性。Part1:属性的类型属性的类型可以是基本类型,比如int整数,float浮点数也可以是类类型,比如String字符串publicclassPlant{......
  • 封装C++项目为dll
    这是头文件,定义了一个接口类IMyInterface。#pragmaonce#ifndefMY_INTERFACE_H#defineMY_INTERFACE_H#define_CRT_SECURE_NO_WARNINGS#defineMY_DLL_API__declspec(dllexport)//定义导出到DLL中的宏//接口类,用于导出到DLLclassMY_DLL_APIIMyInterface{pub......
  • 面向1-类和对象-方法、new的定义和使用
    面向对象编程OOP面向面向对象和面向过程面向对象oop-分类的思维方式-本质——以类的方式组织代码,以对象的组织(封装)数据抽像+封装+继承+多态认识上-先有对象(具体的事物)再有类(对对象的抽象)代码上-先有对象再有类(类是对象的模板)面向过程-线性步骤分析方式类-描绘一系列事物的......
  • Allegro画焊盘封装
    Allegro画焊盘封装根据自己的理解和参考其他人的书籍总结一下用Allegro软件画焊盘的过程。本文档用的是17.4的版本。画焊盘封装用PadstackEditor软件,画元器件封装用Allegro软件。下面开始介绍使用PadstackEditor软件画焊盘封装。第一步:软件打开界面如下,注意左下角的单位选择,......
  • java基础篇(java面向对象基础)
            面向对象编程(OOP)是Java编程语言的核心特性之一。以下是Java面向对象编程的一些基础概念和示例:类(Class) 类是对象的蓝图或模板,定义了对象的属性和行为。publicclassPerson{//属性Stringname;intage;//构造方法publicP......
  • 封装、继承和多态
    封装1、良好的封装能够减少耦合。2、类内部的结构可以自由修改。3、可以对成员进行更精确的控制。4、隐藏信息,实现细节。继承Java有三种实现多继承效果的方式,分别是内部类、多层继承和实现接口。父类的构造方法不能被继承子类的构造过程必须调用其父类的构造方法......
  • 面向对象-接口和多态
     1.接口的特性:接口里的数据成员必须初始化,且数据成员均为常量;接口里的方法必须全部声明为abstract,也就是说,接口不能像抽象类一样保有一般的方法,而必须全部是“抽象方法”。2.接口定义的语法:interface接口名称//定义抽象类{final数据类型成员名称=常量;/......