首页 > 编程语言 >Java面向对象编程的三大特性:封装、继承、多态。

Java面向对象编程的三大特性:封装、继承、多态。

时间:2023-06-18 17:33:23浏览次数:47  
标签:Java weight int void 多态 System 面向对象编程 wheels public

一、封装

  封装的核心在于私有化(private),大部分情况下,来封装对象的属性,很少有封装方法的。通过将对象的属性封装,提供对外的公共方法来访问属性是最常见的方式。

public static class FengZhuang{
        // 通过封装,设置私有属性
        private String name;
        private int age;
        //通过提供公共的对外接口,访问私有属性
        public void setName(String name){
            this.name = name;
        }

        public int getAge() {
            return age;
        }
        public void setAge(int age){
            if (age < 10 || age > 110){
                System.out.println("年龄设置不符合要求!!!");
                return;
            }else {
                this.age = age;
            }
        }
public static void main(String[] args) {
        FengZhuang fengZhuang = new FengZhuang();
        fengZhuang.setAge(242);
        fengZhuang.setName("Gao");

        System.out.println(fengZhuang.getAge());
    }

二、继承

  继承是子类继承父类的方法和属性,私有方法不能被继承,java只能进行单继承,也就是说一个子类只有一个父亲,但是一个父亲可以有多个儿子。

// 定义一个Vehicle类 : 父类
    public  static class Vehicle {
        //	定义属性
        private int wheels;
        private double weight;
        //	有参构造方法
        public Vehicle(int wheels, double weight) {
            super();//继承Object有参构造方法
            this.wheels = wheels;
            this.weight = weight;
        }
        //	无参构造方法
        public Vehicle() {
            super();//继承Object无参构造方法
        }
        //	配合private使用,防止恶意篡改数据
        public int getWheels() {
            return wheels;
        }
        public void setWheels(int wheels) {
            this.wheels = wheels;
        }
        public double getWeight() {
            return weight;
        }
        public void setWeight(double weight) {
            this.weight = weight;
        }
        //	方法show1
        public void show1(){
            System.out.println("车轮个数:"+this.wheels);
            System.out.println("车重:"+this.weight+"吨");
        }
    }
    // 创建一个Car类:子类
    public static class Car extends Vehicle{//extends Vehicle:声明父类为Vehicle
        private int loader;

        public Car(int wheels, double weight, int loader) {
            super(wheels, weight);//继承Vehicle有参构造方法
            this.loader = loader;
        }

        public Car() {
            super();//继承Vehicle无参构造方法
        }

        public int getLoader() {
            return loader;
        }

        public void setLoader(int loader) {
            this.loader = loader;
        }
        //	方法show2
        public void show2(){
            System.out.println("车载人数为:"+this.loader);
        }
    }
    // 创建一个Truck类:子类
    public static class Truck extends Car {//extends Car:声明父类为Car

        private double payload;

        public Truck(int wheels, double weight, int loader, double payload) {
            super(wheels, weight, loader);//继承Car有参构造方法
            this.payload = payload;
        }

        public Truck() {
            super();//继承Car无参构造方法
        }

        public double getPayload() {
            return payload;
        }

        public void setPayload(double payload) {
            this.payload = payload;
        }
        //	方法show3
        public void show3(){
            System.out.println("有载重量为:"+this.payload+"吨");
        }
    }
    public static void main(String[] args) {
      // 创建子类对象
        Truck cm = new Truck();
        cm.setWheels(4);
        cm.setWeight(1.5);
        cm.setLoader(5);
        cm.setPayload(2);
        //调用 方法
        cm.show1();
        cm.show2();
        cm.show3();
    }

三、多态

  多态,顾名思义有多种形式,它允许不同的对象对同一个消息做出不同的响应。多态是同一个接口,通过使用不同的实例而执行不同的操作。

  多态主要分为两种:重写和重载。重载是编译型多态,重写是运行时多态。编译看左边,运行看右边。

  首先,对 “重写” 作一番解释,重写 发生于 继承关系中,子类在继承父类的原有方法。但是我们在有些情况下,不想要继承原有的方法,所以要对继承的方法进行重写,但是有一点需要注意,就是子类函数的访问修饰符权限不能够少于父类。重写是一个“动态绑定”,只有在运行的时候,我们才能确定访问具体方法是哪一个。

class Vegetable{
    public void vegetable(){
        System.out.println("蔬菜");
    }
}

class Cucumber extends Vegetable{
    @Override
    public void vegetable() {//子类Cycle对父类Vegetable的vegetable方法的重写
        System.out.println("黄瓜");
    }
}

class Bittermelon extends Vegetable{
    @Override
    public void vegetable(){//子类Bittermelon对父类Vegetable的vegetable方法的重写
        System.out.println("苦瓜");
    }
}

 

  其次是重载,重载相比较于重写,简单一些,要求在于 “同名方法” 的参数列表不同。例子:fangfaming(int A) 与 fangfaming(int A,int B)是多态中的重写。 

public class A {

    public static void main(String[] args) {
        A a=new A();
        a.test(1,2);
        a.test(1);
    }
    public void test(int i,int j){
        System.out.print("A");
    }
    public void test(int i){
        System.out.print("B");
    }
}
//答案:AB

  

 

  

标签:Java,weight,int,void,多态,System,面向对象编程,wheels,public
From: https://www.cnblogs.com/kuangmeng/p/17489314.html

相关文章

  • Java:使用poi操作docx的word文档
    packagecom.aomen.java;importorg.apache.poi.openxml4j.exceptions.InvalidFormatException;importorg.apache.poi.util.Units;importorg.apache.poi.xwpf.usermodel.*;importorg.apache.xmlbeans.XmlCursor;importorg.openxmlformats.schemas.wordprocessingml.......
  • Java网络编程
    一、Java网络编程网络编程是指编写运行在多个设备(计算机)的程序,设备通过网络连接起来。java.net包中J2SE的API包含有类和接口,提供了低层次的通信细节。可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。协议:计算机网络中,连接和通信的规则被称为网络通信协议1.UDP......
  • Java 注解
    一、Java注解(Annotation)简介从Java5版本之后可以在源代码中嵌入一些补充信息,这种补充信息称为注解(Annotation),是Java平台中非常重要的一部分。注解都是@符号开头的,例如:在学习方法重写时使用过的@Override注解。同Class和Interface一样,注解也属于一种类型。Annotation......
  • Java反射机制
    一、Java反射机制是什么?Java 反射机制是Java语言的一个重要特性。在学习Java反射机制前,大家应该先了解编译期和运行期两个概念:编译期是指把源码交给编译器编译成计算机可以执行的文件的过程。在Java中也就是把Java代码编成class文件的过程。编译期只是做了一些翻译功能,......
  • java操作redis之jedis
    我们之前对Redis的学习都是在命令行窗口,那么如何使用Java来对Redis进行操作呢?对于Java连接Redis的开发工具有很多,这里先介绍通过Jedis实现对Redis的各种操作。(前提是你的redis已经配置了远程访问)1.创建一个maven工程,并且添加以下依赖<dependencies><!--jedis--><......
  • java web模板学习+1
    今天找到一个模板很厉害,代码开源的,拔下来就能跑。下面是他的博客地址和他的源代码地址。博客地址:开源一套简单通用的后台管理系统-huanzi-qch-博客园(cnblogs.com)开源地址:https://gitee.com/huanzi-qch/base-admin......
  • /usr/bin/java -> /etc/alternatives/java
    [root@localhosteclipse]#whichjava/usr/bin/java[root@localhosteclipse]#ls-l/usr/bin/javalrwxrwxrwx1rootroot22Aug12012/usr/bin/java->/etc/alternatives/java[root@localhosteclipse]#ls/etc/alternatives/antlr......
  • 【Java学习】 Spring的基础理解 IOC、AOP以及事务
    一、简介  官网: https://spring.io/projects/spring-framework#overview   官方下载工具: https://repo.spring.io/release/org/springframework/spring/  github下载: https://github.com/spring-projects/spring-framework   maven依赖:<dependency>......
  • java 聚合项目--pom.xml配置文件
    java聚合项目创建聚合项目的2种方式:分层项目开发:1.DAO:java工程项目;(mavenquickstart)2.Service:java工程项目;(mavenquickstart)3.模型:java工程项目;(mavenquickstart)4.共工模块:java工程项目;(mavenquickstart)5.controller+view:webapp:web工程项目(mavenwebapp)工程类型:packing......
  • java 创建聚合项目的2种方式及 部署Nacos
    创建聚合项目的2种方式byIDEA20231.创建module,erp-parent2.创建子module,设置每个module的pom.xml属性pom及父模块;3.配置erp-parent模块里的pom.xml1.创建module,erp-parent2.创建子module--mavenarchet部署nacosype(archetype:quickstart(java工程),webapp(web工程),设置每......