• 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修饰





















  • 相关阅读:
    sqlserver中判断表或临时表是否存在
    Delphi 简单方法搜索定位TreeView项
    hdu 2010 水仙花数
    hdu 1061 Rightmost Digit
    hdu 2041 超级楼梯
    hdu 2012 素数判定
    hdu 1425 sort
    hdu 1071 The area
    hdu 1005 Number Sequence
    hdu 1021 Fibonacci Again
  • 原文地址:https://www.cnblogs.com/xiaoxiao5ya/p/046e71e5088188cab28904bf9aec0642.html
Copyright © 2020-2023  润新知