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

    类:
    类就是对某一事物的描述(举例:蔬菜,水果,动物)

    对象:
    对象就是实际存在的事物的个体,(举例:蔬菜中某一种,人类(分男人和女人))

    标准类:
    【类的修饰字】 class 类名称 【extends  父类名称】【implements    接口名称列表】{
    变量定义及初始化;        成员变量;
    方法定义及初始化;        成员方法;
    }

    记住:继承只能继承一个类,可以实现多个接口,

    static:静态方法,又称为类方法,static声明的变量值,所有对象使用的值都是一致的
    调用静态成员变量,类名。静态成员



    对象的定义:
    对象的创建即对类的属性和行为的实现(类的实例化)

    声明一个类的变量,就是声明了该类的一个实例,即对象,创建对象包括声明对象,实例化对象,即为对象分配存储空间两步

        类名    对象名     = new    类名();        例如:A aa = new A();            A()叫做构造函数

    --------------------------------------------
    方法参数传递
    public int s(int x ,int y){
    return ? (返回值类型)
    }

    引用类型传递:
    public A s(A a ){
    return a ;
    }

    -----------------------------------------------------
    面向对象的三大特点:封装,继承,多态

    封装:    主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现。

    继承:    继承能很好的实现了代码复用,提高饿了编程效率
    类具有继承性,子类对父类的继承关系,体现了现实世界中特殊和一般的关系。
    通过继承可以更有效的组织程序结构,明确类之间的关系。并充分利用已有的类来完成更复杂,深入的开发
    class    <子类>    extends    <唯一的父类名>
    {
        <类定义体>
    }

    类之间只能单继承,不能多继承,下面这幅图:


    子类可以继承父类所有的后成员变量和成员方法,但不能继承父类的构造方法。在子类的构造方法中可使用语句super(参数列表)调用父类的构造方法。

    class    Student    extends    Person
    {
        public Students (String name ,int age ,String school){
            super(name ,age);        //调用父类的构造方法
            this.school    = school;
    }
    }

    -------------
    构造方法:
    1,与类相同
    2,没有返回值类型,不能用return
    3,一般用public修饰

    所有的类中都有一个默认的无参构造方法
    重写构造方法后,默认的无参构造方法失效
    构造函数主要用来做默认初始化

    子类继承父类后
    不能继承父类的构造方法,在new子类构造方法时候,默认去执行无参的构造方法
    如果父类是重写为有参数的构造方法的话,子类必须重写构造方法
    子类可以扩展自己成员

    --------------------------------
    重写和重载:





    ----------------------------------------------------------------------------------

    内部类:
    package day05;
    /**
     * 演示内部类1:内部类在方法外面
     * 内部类有两种,一种在方法外面,。
     * 一种在方法内部
     * 内部类可以访问外部类的成员,包括私有成员,成员包括成员变量和成员方法
     * 但是外部类不能访问内部类的成员
     * 内部类生成的.class 文件        neibu$nimei.class
     * 如果内部类没有static,里面成员不能用static修饰
     * @author yw.wang
     *
     */
    public class neibu {
        private int a = 1;
        private void haha(){
            System.out.println("fuckyou!!!");
        }
        public static void main(String args[]){
            neibu n = new neibu();
            //内部类的创建。并且如果引用变量,采用就近原则
        //外部类.内部类     内部对象名 = 外部类对象.new  内部类();
            
            neibu.nimei n1 = n.new nimei();
            n1.usehaha();
            
            neibulei2 n2 = new neibulei2();
            n2.show2();
        }
        class nimei{
            //public static int a = 10;
            public void show(){
                System.out.println("我是一个show方法");
                System.out.println(a);
            }
            public void usehaha(){
                haha();
            }
        }
        static class neibulei2{
        
            public void show2(){
                System.out.println("我是第二个内部类,加了静态,相当于普通类");
            }
        }
    }


    内部类在方法内部:
    package day05;
    public class Test03 {
        public void a() {
            class xinlei {
                public void b() {
                    System.out.println("哈哈");
                }
            }
            xinlei x = new xinlei();
            x.b();
            System.out.println("呵呵");
        }
        public static void main(String[] args) {
            Test03 dd = new Test03();
            dd.a();
        }
    }


    抽象类:
    package day05;
    /**
     * 演示抽象类
     * 1.用abstract修饰的类
     * 2.只有方法定义,没有方法实现,抽象方法只能出现在抽象类中
     * 3.抽象类包含抽象方法,但是也可以有普通方法,普通变量
     * 4.创建对象,不能直接new,只能new子类的的实现,
     *         子类如果想继承抽象类,必须重写所有的抽象方法,子类就不是抽象类了
     * 5.如果不重写,那么子类也是抽象类,也不可以直接new
     * @author yw.wang
     *
     */
    public abstract class AbstractTest01 {
    public int a = 123;
        abstract void haha();
    public void hehe(){
        System.out.println("fuckyou!!!");
    }
    public static void main(String[] args) {
        def2 d2 = new def2();
        d2.haha();
    }
    }
    class def2 extends AbstractTest01{
        void haha() {
    //重写了抽象类父类的haha方法,现在不是一个抽象类,haha方法也不是抽象方法,所以可以直接new
            System.out.println("我重写了父类的抽象方法!!");
        }
        
    }

    接口:
    package day05;
    /**
     * 接口演示:
     * 接口只能包抽象方法和常量
     * 在接口中方法如果没写abstract修饰,那么该方法被默认是抽象方法
     * 只能new接口的实现类,也必须重写接口的抽象方法
     * @author yw.wang
     *
     */
    public class InterfaceTest01 implements Interface,a,b,c {
        @Override
        //实现接口的抽象方法
        public void function() {
        System.out.println("实现了接口的抽象方法");
        }
        public static void main(String[] args) {
            InterfaceTest01 in = new InterfaceTest01();
            in.function();
        }
        
    }
     interface Interface {
        public int a =10;
        public abstract void function();
        
    }
    interface a{}
    interface b{}
    interface c{}  

    接口和抽象类的区别:
    1,java中所有的类的父类java.lang.Object,但是接口没有共同的根
    接口可以当做抽象类使用,区别如下:

    1,接口中的每个方法,没有实现部分,都是抽象方法,;抽象类中可以有具体的方法

    2,接口中的数据必须是常量;抽象类可以有各种类型的数据

    3,由于定义在接口中所有方法都是抽象方法,接口中可以省略abstract修饰符;
    但是抽象类中的抽象方法必须用abstract修饰





















  • 相关阅读:
    MongoDB笔记
    mysql笔记
    08-下载中间件
    ubuntu1804安装pycharm2018.3.x
    02-CSS基础
    14-eval 函数
    13-文件
    12-模块和包
    11-异常
    有关dir和 unittest
  • 原文地址:https://www.cnblogs.com/xiaoxiao5ya/p/046e71e5088188cab28904bf9aec0642.html
Copyright © 2011-2022 走看看