编程练习生的第四天!

面向对象

面向对象和面向过程的区别

面向过程和面向对象都是一种编程思想,不同的思维方式
面向过程:"如何完成|如何实现?"然后一步一步实现就可以了
面向对象:"这件事情应该找谁来完成?"完成的这个人就是对象,不关注实现过程,只关注对象
面向对象依托于面向过程

自定义类:

pubic class 类名{
//属性
修饰符 数据类型 变量名=变量值;
//功能
修饰符 返回值类型|void 方法名(参数列表){
方法体;

不加static修饰的方法叫做成员方法

public class Phone02{ 
 //颜色;
 public String color;
 //品牌;
 public String brand;
 //价格;
 public double money;
 
 //打电话 : 不加static修饰的方法叫做成员方法
 public void call(){
  System.out.println("从前有一个人长得像电话,出门就被打了...");

使用自定义类:

创建这个类型的一个变量|引用 创建对象->new
引用数据类型 变量名 = new 引用数据类型();

变量名.属性名字
变量名.方法名字(实参)

//1.创建了一个手机对象,表示真实存在的事物
  Phone02 p1=new Phone02();
  Phone02 p2=new Phone02();
  //2.给成员属性赋值
  p1.color="黑色";
  p1.brand="苹果";
  p1.money=8000;
  
  //3.使用功能
  p1.call();
  System.out.println(p1.color);
  p2.call();
  System.out.println(p2.color);  //成员属性不赋值存在默认值
  System.out.println(p2.brand);
  System.out.println(p2.money);

//new就是一个新的对象

//匿名对象 没有名字对象 只能使用一次,看到new就是一个新的对象

//引用数据类型的成员变量值为null
//Car04 car3=null; 引用数据类型变量的声明,对象指向为null
//NullPointerException 使用某个对象的某个功能,但是这个对象没有真实存在,指向为null,所以会发生空指针

** new创建对象会执行的步骤:**

  • 1.在堆中为对象开辟空间,当前类的成员属性会跟随对象进入到堆内存并附默认值
  • 2.调用构造器为对象初始化信息(一般为成员属性第一次赋值)
  • 3.将对象的地址返回给引用

构造器|构造方法|构造函数:

  • 作用:
  • 初始化对象信息
  • 定义:
  • 修饰符 类名([参数]){
  • }
  • 1.没有返回值类型,没有void
  • 2.可以根据需求存在return,提前结束方法
  • 3.构造器不能和static,abstract,final一起使用

** 调用:**

  • 跟随new使用,new其中的一步
  • 1.如果没有显示构造器,编译器会隐式为你提供一个空构造
  • 2.如果存在自定义构造器,编译器不会再为你提供任何构造器, 包括空构造
  • 3.定义多个构造器,参数列表不同,构成构造器的重载,调用根据()中的实参匹配不同的构造器
  • 4.构造器的修饰符可以是private,私有的,只能在当前类中使用这个构造器
  • 根据不同的需求定义不同的构造器,一般都会存在至少一个空构造
  • 作用,使用,定义,特点
public class ConstructorDemo01 {
 
 //空构造  :没有参数的构造器
 /*public ConstructorDemo01(){
  //打印语句的快捷键 : syso->alt+/
  System.out.println("我是无参空构造....");
 }*/
 
 //main->alt+/
 public static void main(String[] args) {
  //Dog dog=new Dog();
  //Dog dog=new Dog("二楞子");  //()匹配不同构造器参数列表
  Dog dog2=new Dog("张二狗","中华田园狗"); //创建对象的同时为成员属性赋值
  //dog.lookHome();
  //dog.name="三楞子";  //修改对象的属性值
  //dog.lookHome();
  
  dog2.Dog();
  
 }
}
class Dog{
 public String name;
 public String type;
 
 //默认提供空构造
 private Dog() {  //只能再当前Dog类中才能使用这个构造器为对象初始化信息
  System.out.println("我是空构造.....");
 }
 
 //带参构造器
 public Dog(String dogName){
  name=dogName;  //为成员属性name赋值
 }
 
 public Dog(String dogName,String dogType){
  name=dogName;
  type=dogType;
 }
 
 //普通的方法  
 public void Dog(){  //方法名不符合标识符的命名规范
  System.out.println(name+"-->"+type);
  
  Dog dog=new Dog();
 }
 
 //功能看家
 public void lookHome(){
  System.out.println(name+"正在看家...");
 }
}
										 2019.07.04

猜你喜欢

转载自blog.csdn.net/Yxiannv/article/details/94657258