Java面向对象学习笔记

面向对象概念

1:面向对象

1:三大特征:封装,继承,多态
2:在java中任何处理的数据都可以看做对象:'a' "hello" 123 图片 文件 视频 音乐 按钮
3:我们想去实现一个功能的时候,不要想着如果自己从0开始写,而要想哪个对象能够给我们实现
这个功能(数组的排序sort,文件的复制copyFIle,字符串的反转:reverse())

2:面向对象的步骤:

1:设计类
    a:JDK提供的类:Scanner,String,Random
    b:自定义类:Student,Person
    c:第三方提供的类:comments-IO ,DButils
2:通过类来创建对象
  a:有名对象
   Person p = new Person();
  b:匿名对象
   new Person();
3:通过对象来访问方法
  a:普通方法
  b:静态方法:static

3:this关键字

  //方式1:
    this本质:哪个对象来调用this所在的方法,this就指向哪个对象
    public void setName(String name) {
        this.name = name;
    }
   //方式2:
   public Student(String name, int age) {
        this.name = name;
        this.age = age;
}
//-------------------
    public Student(String name){
        this.name = name;
    }
    public Student(String name, int age) {
        this(name); //这个在调用上边的构造
        this.age = age;
    }
    //方式3:
    public void show(){
        System.out.println(name + "\t" + age);
    }
    public void print(){
        this.show();
    }

4:匿名对象

   对象的名字:指向该对象的引用变量
   Student stu = new Student(); //stu就是对象的名字
   //匿名对象:对象没有引用变量指向该对象
   new Student(); //匿名对象只能被使用一次,因为使用之后,这片内存再也找不到了

4.1 匿名对象的作用
1:临时调用一个方法,简化书写

    Student stu = new Student();
      stu.study();
      //--------------------
      new Student().study();
2:类作为方法的参数
3:类作为方法的返回类型

2:类与类之间的关系
2.1 组合关系
一个类中有些成员变量是另一个类,这两个类之间就是组合关系,例如:
每个司机都有一辆车

  //1:设计类

   class Car
   {
       private String brand; //品牌
       private String color; //颜色
       private double price; //颜色
   }
   class Driverx
   {
       private String name;
       private int age;
    //每个司机都有一辆车
      private Car car;
   }

2.2 继承关系

  继承关系描述的是类与类之间的所属关系:谁是谁的一种,或者谁包含谁
  人类           动物类       水果类   //父类,超类,基类
  学生类         猫类         香蕉类   //子类

2.3 继承的例子

  class Person //父类
   {
       private String name;
       public void eat(){
        System.out.println("人吃饭")
       }
   }
   //学生类继承人类
   class Student extends Person
   {
   }

继承的优点
1:继承让类与类之间产生关系
2:继承可以优化代码的设计结构
3:可以提高程序的扩展性

 //--------
   class C
   {
        public void func1(){}
   }
   class A extends C
   {

       public void func2(){}
   }
   class B extends C
   {
       public void func3(){}
   }
  //-----------
  class ShengWu
  {
      public void eat(){}
      public void sleep(){}
  }
  class Person extends ShengWu
  {
    public void work(){}
  }
class Cat extends  ShengWu
{
    public void catchMouse(){}
}

2.4继承的其他特点
1:Java支持单继承(一个类只能有一个父类)

 class Fu
  {
      public void eat(){
        //左手拿筷子
      }
  }
  class Mu
  {
      public void eat(){
        //右手拿筷子
      }
  }
  class Zi extends Fu,Mu
  {
  }

java保留了多继承的机制,用另外一种方式来实现多继承(接口)
继承的缺点:
1:Java只支持单继承
2:继承使类之间的耦合性增强,不符合面向对象的设计思想(高内聚,低耦合)

你可能感兴趣的:(java学习,java,面向对象)