A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

面向对象:
    是一种思维方式,关注功能,关注具备功能的对象,关注结果,不关注实现过程。
    基于面向过程。
    将功能封装进对象,强调具备了功能的对象,不关注过程。就是将功能封装进类中,
    当我们想要使用到这个功能的时候,不需要考虑如何去完成这个功能,而是考虑谁具备了这个功能。
   
    类:现实事物的抽象,描述的是一类事物,现实事物特征、行为分别被抽象成了类中的成员变量与成员方法
    对象:某个类的实例,这个类的具体事物
   
    类与对象的关系:
        一个类可以有多个对象,创建对象是使用类的重要方式
        
[一] 封装:
    隐藏实现细节(把数据和方法包装进类中,隐藏属性和具体的实现),提供公共访问方式,被称作是封装。
   
    封装的结果是一个同时带有特征和行为的数据类型。
   
    定义类格式:
        public class 类名 {
            private 数据类型   变量名1;
            private 数据类型   变量名2;
            ...
            
            public xx method(XX xx) {
                //功能逻辑
            }

        }

[二] 继承:
    类与类之间的关系

    如果多个类具有相同的属性和行为,我们可以抽取出共性的内容定义父类,这时再创建相似的类时只要继承父类即可
   
    当一个类的属性与行为均与现有类相似,属于现有类的一种时,这一个类可以定义为现有类的子类
   
    子类会自动拥有父类所有可继承的属性和方法,无需重新定义。并且可以直接使用非私有的父类成员。
    从类与类之间的设计关系来看,子类必须属于父类的一种时,才会继承。
   
    继承的关键字 extends   
        子类   extends  父类{}
    继承的好处:
        提高了代表的可维护性
        提高了代码的复用性
        让类与类之间产生了继承关系
    继承的弊端:
        类与类之间的耦合度过高
    继承特点:
        java中类只能够单继承,不能多继承,可以多层继承
        class Ye extends Object {}
        class Fu extends Ye{}
        class Zi extends Fu {}
        所有的类都直接或者间接的继承了 Object类,Object类称为祖宗类
    继承的注意事项:
        1,使用关键字 extends 让类与类之间 产生继承关系
        2, 父类私有的成员,子类不能继承,因为根本看不到
        3,不能为了继承某个功能而随意进行继承操作,

[三] 多态
    (1)同一个对象,在不同时刻表现出来的不同状态。
        举例:水(水,冰,水蒸气)
              猫(猫,动物)
               
    (2)前提:
        A:有继承或者实现关系。
        B:有方法的重写。
        C:有父类(接口)的引用指向子类对象。
    (3)多态中的成员使用特点:
        Fu fz = new Zi();
        多态时,所有表现形式都是父类的表现形式,
        只有调用方法时,运行的是子类重写的方法
        A:成员变量
            编译看左边,运行看左边。
        B:成员方法
            编译看左边,运行看右边。

         class Fu {
            int num=1;
            void show() {
                System.out.println("showFu");
            }
        }
        class Zi extends Fu {
            int num=2;
            void show() {
                System.out.println("showZi");
            }
        }
        class T {
            public static void main(String[] args) {
                Fu f=new Zi();
                System.out.println(f.num);  
                f.show();   
               
            }

    (4)多态中的转型:
        A:向上转型
            把子类对象赋值给父类(接口)的引用  自动类型提升  int a = 0;  double b =a;
        B:向下转型
            把父类(接口)的引用强制转换成子类对象
            double b = 10.0;
            int a = (int)b;

            Fu  fz = new Zi();(前提)
            Zi  zf = (Zi)fz;


    (5)多态的好处及弊端:
        A:好处
            提高了程序可维护性和可扩展性。
            
        B:弊端
            不能使用子类特有内容。
            要想使用,要么向下转型,要么重新创建子类对象。
    (6)多态的三种形式:
        A:具体的类多态   父类  变量名 = new  子类();
            public class Fu {
                public void show(){
                    System.out.println("父类的show方法");
                }
            }
            public class Zi extends Fu{
                @Override
                public void show(){
                    System.out.println("子类重写父类的show方法");
                }
            }
            Fu fu= new Zi();
        B:抽象类多态     父抽象类  变量名 = new 子类();
            public abstract class Fu {
                public abstract void method();
            }
            public class Zi extends Fu {
                public void method(){
                    System.out.println(“重写父类抽象方法”);
                }
            }
            //类的多态使用
            Fu fu= new Zi();
        C:接口多态       接口  变量名  =  new 实现类();
        public interface Fu {
            public abstract void method();
        }
        public class Zi implements Fu {
            public void method(){
                System.out.println(“重写接口抽象方法”);
            }
        }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马