• 面向对象


    定义

    的方式组织代码,以对象的封装数据

    类和对象的关系

    类是一种抽象的数据类型,它是对某一事物的完整描述

    对象是抽象概念的具体实例

    构造函数

    快捷键:alt+ins=生成构造器

    //构造器(默认无参数)
    public Student(String name,int age) {
        this.name=name;
        this.age=age;
    }
    

    三大特性

    封装

    将复杂的功能封装起来,对外开放一个接口,简单调用

    继承

    1. extend
    2. java中只有单继承,没有多继承
    3. object类(任何类都继承他)
    4. super

    super的注意点

    1. super调用父类的构造方法,必须在构造函数第一个
    2. super和this不能同时调用构造函数
    3. super必须只能出现在子类的方法或子类的构造函数中
    4. 在子类任何构造器(不管有几个形参)中super()是隐藏的

    super和this比较

    super this
    代表的对象 父类对象的应用 本身调用者这个对象
    前提 需要继承 没有继承也可以用

    ctrl+h可以查看继承关系

    方法重写(override)区别于方法重载

    1. 方法重载:同一个类中的方法参数列表不同
    2. 方法重写(有继承关系,子类重写父类
      • 方法名必须相同和参数列表必须相同
    //父
    protected void hello(){
        System.out.println("hello 父类!");
        return;
    }
    //子
    @Override
    public void hello() {
        System.out.println("hello 子类");
    }
    

    多态

    不同的对象调用同样的方法但是做了不同的事情。

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

    2. 存在的条件:继承关系,方法需要重写,父类的引用指向子类的对象 ——也可以理解成表现形式

    3. 类型转换

      1. 子类转化成父类,向上转型

      2. 父类转成为子类,向下转型:强制转换

      3. //类型转换 由高(父类)到底(子类)需要强转
        Person person = new Student();
        ((Student) person).go();
        //person.go(); error
        Student student = (Student) new Person();
        //student.go(); 没有go方法
        

    修饰符

    四种访问方式

    private default protected public
    同一类 1 1 1 1
    同一包中的类 1 1 1
    子类(可以跨包) 1 1
    其他包的类 1

    static

    static 只加载一次

    匿名构造类可以进行赋一些初值

    例子

    public class Person {
        static {//1
            System.out.println("this is 静态代码块");
        }
    
        {//2
            System.out.println("this is 匿名代码块");
        }
    
        public Person() {//3
            System.out.println("this is 构造方法");
        }
    
        public static void main(String[] args) {
            Person person = new Person();
            System.out.println("===================");
            Person person1 = new Person();
        }
    }
    /*
    输出
    this is 静态代码块
    this is 匿名代码块
    this is 构造方法
    ===================
    this is 匿名代码块
    this is 构造方法
    */
    

    abstract抽象类

    public abstract class Action {
        public abstract int add(int a,int b);
        public abstract int del(int a,int b);
        public abstract int mul(int a,int b);
    }
    

    注意:

    1. 不能new这个抽象类,只能靠子类继承
    2. 抽象类中可以写普通方法
    3. 抽象方法必须在抽象类中

    接口

    接口中所有的定义方法都是抽象的public abstract

    接口可以多继承,区别extends

    public interface UserService {
        void update();
    }
    public class UserServiceImpl implements UserService {
        @Override
        public void update() {
    
        }
    }
    

    技巧

    效果图

    具体的操作:

  • 相关阅读:
    Java中参数传递时值传递的机制分析
    掰碎了讲中文编码
    掰碎了讲换行符和回车符
    创建父子控制器
    分页(进行封装处理)
    五:面向对象的三大特性:封装、继承、多态
    iOS9弹框的最新两种方式(解决控制器以外的类无法弹出的问题)
    各类报错汇集
    NBA季后赛结果预测
    十:类的本质及isa指针和元类的简单介绍
  • 原文地址:https://www.cnblogs.com/10134dz/p/13781375.html
Copyright © 2020-2023  润新知