首页 > 编程语言 >java面向对象

java面向对象

时间:2024-02-12 16:33:44浏览次数:31  
标签:java name 构造方法 子类 面向对象 父类 方法 public

一.什么是面向对象

    面向对象编程的本质是:以类的方式组织代码,以对象的组织(封装)代码。

1.面向对象的三大特性:

  封装

  继承

  多态

 

二.super和this

    1.super关键字的用法有三种

      1.在子类的成员方法中访问父类的成员变量.

      2.在子类的成员方法中访问父类的成员方法.

      3.在子类的构造方法中访问父类的构造方法.

    2.

 //this关键字用法有三种
    //1.在本类的成员方法中,访问本类的成员变量.
    //2.在本类的成员方法中,访问本类的成员方法.
    //3.在本类的构造方法中,访问本类的另一个构造方法.
    //在第三种方法中要注意:
    //A.super和this两种构造调用,不能同时使用.
    //this(...)调用也必须是构造方法的第一个语句,唯一一个,
    int num = 10;
    public static void main(String[] args) {
        ThisDemo thisDemo = new ThisDemo();
        thisDemo.showNum();
    }

    public void showNum(){
        int num = 20;
        System.out.println(num); //局部变量
        System.out.println(this.num); //类中的成员变量
    }

    public void methodA(){

    }

    public void methodB(){
        this.methodA(); //本类的成员方法调用本类的另一个成员方法
    }


    public ThisDemo(){
        this(12);//本类的无参构造方法 调用本类的有参构造方法
    }

    public ThisDemo(int a){

    }

三.构造方法(构造器)

  1.构造方法

      和类名相同 无返回值。

  2.作用

      new的本质实在调用构造方法。

      初始化对象的值。

  3.注意点

      在定义有参构造后,无参构造必须显示定义

public class Person {

    //构造器有以下俩个特点:
    //1.必须和类的名字相同
    //2. 必须没有返回类型,也不能写void

    //显示的定义构造器
    String name;

    //构造器作用:实例化初始值
    //使用new 关键字,本质上是在调用构造器
    public Person(){
        this.name="lc";

    }
    //有参构造,一旦定义了有参构造,无参构造就必须显示定义
    public Person(String name){
        this.name=name;
    }


}

 

 四.封装

    1.封装的步骤

        使用privite修饰需要封装的成员变量。

        提供一个公开的方法设置或访问私有的属性:通过setXX()和getXX()方法。

    2.封装的意义与作用

        提高程序的安全性,保护数据。

        隐藏代码的实现细节。

        统一用户的调用接口。

        提高系统的可维护性。

        便于调用者的使用,

public class Teacher {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    
public class Teacher {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

 

五.super关键字

  1.super的使用

      访问父类中的属性。

      调用父类中的方法。

      调用父类中的构造器。

  2.super注意点

      super调用父类的构造方法,必须在构造方法中的第一个。

      super必须只能出现在子类的方法或者构造方法中。

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

  3.VS this

      代表的对象不同

        this:本身调用者这个对象,

        super:代表父类对象的应用,

      前提

        this:没有继承也可以使用。

        super:只能在继承条件下使用。

      构造方法

        this():本类的构造。

        super():父类的构造。

 

 

 六.多态

    即同一方法可以根据发送对象的不同而采用多种不同的行为方式

 

//父类的引用指向子类
        Student s1 = new Student();
        //父类型  可以指向子类 但是不能调用子类的独有方法
        Person s2 = new Student();
        Object s3 = new Student();

    多态存在的条件:

        有继承关系

        子类重写父类的方法

        父类引用指向子类的对象

 

    多态的注意事项

        多态是方法的多态,属性没有多态性

 

 七.方法重载和方法重写

    方法重载

          方法名一样,但参数列表不同。

 

    方法重写

          只存在于有继承关系的类里 子类来重写父类的方法。

 

          静态方法不能被重写

            1. 父类的静态方法不能被子类重写为非静态方法 //编译出错             2. 父类的非静态方法不能被子类重写为静态方法;//编译出错             私有方法不能被子类重写,

 

       重写的语法         1. 方法名必须相同         2. 参数列表必须相同         3. 访问控制修饰符可以被扩大,但是不能被缩小: public protected default private         4. 抛出异常类型的范围可以被缩小,但是不能被扩大ClassNotFoundException ---> Exception         5. 返回类型可以相同,也可以不同,如果不同的话,子类重写后的方法返回类型必须是父类方法返回类型的子类型           例如:父类方法的返回类型是Person,子类重写后的返回类可以是Person也可以是Person的子类型

 

 

八.抽象abstract

  1.语法

public abstract class Action{
public abstract void doSomething();
}
public void doSomething(){...}

  2.抽象类和抽象方法的关系

      抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。     

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:java,name,构造方法,子类,面向对象,父类,方法,public
From: https://www.cnblogs.com/1997Li/p/17930901.html

相关文章

  • 【Java 并发】【队列应用】【二】Tomcat的NioEndPoint中ConcurrentLinkedQueue 的使用
    1 前言这一节我们讲解Tomcat的NioEndPoint中ConcurrentLinkedQueue的使用。2  Tomcat的容器结构本节讲解apache-tomcat-7.0.32-src源码中ConcurrentLinkedQueue的使用。首先介绍Tomcat的容器结构以及NioEndPoint的作用,以便后面能够更加平滑地切入话题,如图11-4所示......
  • 【Java 并发】【队列应用】【一】ArrayBlockingQueue 的使用-Logback异步日志打印
    1 前言看了那么多Java提供的队列工具,那么我们这节开始看看哪些地方用到了这些队列哈。这一节我们讲解logback异步日志打印中ArrayBlockingQueue的使用。2  异步日志打印模型概述在高并发、高流量并且响应时间要求比较小的系统中同步打印日志已经满足不了需求了,这是因为......
  • 【Java 并发】【十】【JUC数据结构】【十】PriorityBlockingQueue 原理
    1 前言这节我们继续看看另一个队列 PriorityBlockingQueue,优先级的哈。2 PriorityBlockingQueue介绍PriorityBlockingQueue是带优先级的无界阻塞队列,每次出队都返回优先级最高或者最低的元素。其内部是使用平衡二叉树堆实现的,所以直接遍历队列元素不保证有序。默认使......
  • 【Azure Function】Azure Function中使用 Java 8 的安全性问题
    问题描述使用AzureFunction,环境是Linux的Java8。目前OracleJavaJDK8,11,17和OpenJDK8/11/17都在存在漏洞受影响版本的范围内。OpenJDK                 CVEnumbers:    CVE‑2023‑21954CVE‑2023‑21938CVE‑2023‑21937CVE......
  • 【Java 并发】【十】【JUC数据结构】【九】ConcurrentLinkedQueue 原理
    1 前言JDK中提供了一系列场景的并发安全队列。总的来说,按照实现方式的不同可分为阻塞队列和非阻塞队列,前者使用锁实现,而后者则使用CAS非阻塞算法实现。这节我们来看看 ConcurrentLinkedQueue。2 ConcurrentLinkedQueue介绍ConcurrentLinkedQueue是线程安全的无界非阻......
  • Java之泛型系列--继承父类与实现多个接口(有示例)
    原文网址:​​Java之泛型系列--继承父类与实现多个接口(有示例)_IT利刃出鞘的博客-CSDN博客​​简介本文介绍java如何用泛型表示继承父类并实现多个接口。用泛型表示某个类是某个类的子类或者实现了接口的方法为:<TextendsA&B&C> 用法1:全都是接口。对于本例来说:A、B......
  • JAVA中this和super
    thisthis表示使用的对象本身,可以调用对象的属性和对象的方法以及对象的构造方法(this.x和this.(),其中this.()只能在构造方法的第一行调用且不能和super.()共同使用)使用原因避免属性和方法变量名相同时出现就近原则的冲突使用细节supersuper代表父类的引用,用于访问父类......
  • JAVA构造方法
    构造方法介绍语法使用细节关于在继承中新增的构造方法使用细节1子类必须要调用父类的构造器,完成父类的初始化2父类构造器的调用不限于直接父类!将一直往上追溯直到Object类(顶级父类)3当创建子类对象时,不管使用的是子类的哪个构造器,默认情况下总会调用父类......
  • JAVA的4种访问修饰符
    1、基本介绍补充:1属性和方法可以用四种访问修饰符修饰;类只能用public和默认修饰符修饰,且一个.java文件中只能有一个public修饰的类作为主类,其他类用默认修饰符修饰。2访问权限起作用的情况:①在一个类中定义另一个类的对象,当访问该对象的属性或方法时,修饰符根据同类、同......
  • java中使用opencl操作GPU
    需要管理GPU资源,使用java编写,选用opencl框架,并且选择org.jocl包(<dependency><groupId>org.jocl</groupId><artifactId>jocl</artifactId><version>2.0.5</version></dependency>)。具体opencl原理此处不涉及,仅记录使用java该如何做基本操作。最少要以下几步,详细可以参看:ht......