Java基础02——面向对象基础

一、基本语法

【变量、数据类型、数组、运算符、流程控制语句】

二、面向对象基础与进阶

【类和对象、方法(构造、重载)、继承(方法重写)、抽象类、接口、匿名内部类、泛型、】

三、面向对象高级

【I\O流(文件流、数据流、对象流)、反射、多线程】

四、常用工具类:

【类集合(ArrayList、HashSet、HashMap)、String(切割)、Collections类排序】

作品一:day04:订单(用户类和商品类)

 

二、面向对象基础

1、类:一个用来封装多个数据的模板

1 public class StudentInfo 
2 {
3     String name;
4     String stuNbr;
5     int age;
6     float score;
7 }

2、对象: 根据类模板创建出来的一套具体数据(可以用该类型的变量来引用)

StudentInfo stu = new StudentInfo();

3、构造方法: 用来构造一个对象时执行的初始化逻辑

public class Employee
{
   String id;
   // 空参构造方法:
   public Employee()
  {
       
   }
   // 有参构造方法:
   public Employee(String p1,String p2,float p3)
  {  
       this.id = p1;
       this.name = p2;
       this.salary = p3;
   }
   
}

引用构造方法:

 // 利用空参构造来创建对象
    Employee e1 = new Employee();
    Employee e2 = new Employee();
    Employee e3 = new Employee();
      
 // 利用有参构造来创建对象
    Employee e4 = new Employee("4","d",5600);

4、方法:用来封装一段逻辑

    // 无参,无返回值   
    public void sayHello()
    {
        System.out.println("我爱你,真的,很爱");
    }       
    // 无参,有返回值  
    public int getSelfSum()
{
int a=6,b=8;
return a+b; } // 有参,无返回值 public void sayHelloToSomeOne(String name)
{ System.out.println(name
+ "我爱你,真的,很爱"); } // 有参,有返回值,且是静态(类方法:跟对象数据无关系) // 静态方法可以在对象上调,但是没有必要 public static int getOtherSum(int x,int y){ return x+y; } // 有参,有返回值,非静态 (对象方法:跟想象数据有关系) // 非静态方法,必须在对象上调 public int getOtherSum(int x){ return this.a+this.b+x; }

方法重载:同名方法,但是参数列表不一样

 5、继承

整体作用:对同一类事物进行类定义时,很多的公共属性和方法,可以抽取到一个父类中;

具体事物类只要继承这个父类,就拥有了它的属性和方法

 

 

/** 定义一个父类 Person **/
public class Person{
    public String name;
    public int age;
    public float salry;
    
    public void say(){
        
    }
    public void eat()
        {
    sysout("正在吃饭....")
    }
}    

继承语法:

/** 定义一个子类 ChinesePerson **/
public class ChinesePerson extends Person{
    // 公共属性和方法就不需要重新定义了(父类中的私有属性和方法不会被继承)
    // 可以定义特有属性
    public String[] friends;
    // 可以定义特有方法
    public void makeFriends(String[] friends){
        this.friends = friends;
    }
    // 也可以重写父类中的方法
    @Override
    public void eat(){
        sysout("你好,吃了吗?");
    }
}

注意:

1、但不能有抽象方法

2、如果父类中的某个方法被final所修饰,则子类不能再重写该方法

6、抽象类

抽象类一般用来作为一个父类,但是里面可以有方法是抽象的,以让子类来实现。

 抽象类和普通类的区别:  抽象类中可以有抽象方法(只有方法定义,没有方法体)

语法:

public abstract class AbstractPerson {
    
    public String name;
    public int age;
    
    //abstract 声明这个方法是一个抽象方法
    public abstract void say();
    
    public void eat() {
        System.out.println("正在吃饭......");
    }
    
}

继承抽象类的子类

public class Japanese extends AbstractPerson{

    /**
     * 子类中必须实现抽象类中的抽象方法
     */
    @Override
    public void say() {
        System.out.println("雅蠛蝶");
    }
}

 

posted @ 2019-03-04 09:42  zr-zhang2019  阅读(129)  评论(0)    收藏  举报