zoukankan      html  css  js  c++  java
  • 面向对象

    定义

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

    类和对象的关系

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

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

    构造函数

    快捷键: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() {
    
        }
    }
    

    技巧

    效果图

    具体的操作:

  • 相关阅读:
    POJ 3419 Difference Is Beautiful (DP + 二分 + rmq)
    CodeForces 755C PolandBall and Forest (并查集)
    CodeForces 754D Fedor and coupons (优先队列)
    CodeForces 753C Interactive Bulls and Cows (Hard)
    CodeForces 754C Vladik and chat (DP+暴力)
    HDU 1996 汉诺塔VI (排列组合)
    HDU 1995 汉诺塔V (水题)
    HDU 2077 汉诺塔IV (递推)
    HDU 2064 汉诺塔III (递推)
    How Javascript works (Javascript工作原理) (二) 引擎,运行时,如何在 V8 引擎中书写最优代码的 5 条小技巧
  • 原文地址:https://www.cnblogs.com/10134dz/p/13781375.html
Copyright © 2011-2022 走看看