类和对象

类和对象


1.类和对象基础

  • C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。
  • JAVA是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。
  • 面向过程: 1.把冰箱打开 2. 把大象放入 3.冰箱关起来 。

  • 面向对象: 打开冰箱储存关闭 都是对冰箱的操作,是对冰箱的行为。冰箱就是一个对象,所以只要操作冰箱所具备的功能,都要定义在冰箱中。

  • 类就是一类对象的统称。对象就是这一类具体化的一个实例。

  • 类相当于一个模板,对象是由模板产生的样本。一个类,可以产生无数的对象。 声明一个类就是创建一个新的数据类型,而类在 Java中属于引用类型, Java 使用关键字 class 来声明类。


2. 类和对象实例化

// 创建类
class <class_name>{  
    field;//成员属性
    method;//成员方法
}
// 实例化对象
<class_name> <对象名> = new <class_name>();
//

实例化对象后 如何访问数据的对象成员呢?
<对象名> . 数据成员/方法

类中的元素称为:成员属性。类中的函数称为:成员方法。

  • 一个类可以实例化多个对象;
  • 静态的数据成员和方法通过类来调用;
  • 静态的数据成员方法不依赖于对象;
  • 在静态方法内部,不允许访问实例数据成员,不允许调用实例方法成员 ;不能直接访问 ,间接还是可以的。
  • 如果类当中的数据成员,没有初始化的时候 默认值为对应的0值;
    如果是引用类型:null 如果是简单类型 就是0;
    eg: char \u0000 — bollean true
  • 方法需要void , 成员属性不需要;
class Person {
    public int age;//成员属性 实例变量
    public String name;
    public String sex;
    public void eat() {//成员方法
       System.out.println("吃饭!");  
   }
    public void sleep() {
       System.out.println("睡觉!");  
   }

3.类的成员和封装


class Person { 
 public int age;//实例变量 存放在对象内
 public String name;//实例变量
 public String sex;//实例变量
比特科技 public static int count;//类变量也叫静态变量,编译时已经产生,属于类本身,且只有一份。存放在方法区
 public final int SIZE = 10;//被final修饰的叫常量,也属于对象。 被final修饰,后续不可更改
 public static final int COUNT = 99;//静态的常量,属于类本身,只有一份 被final修饰,后续不可更改
 //实例成员函数
 public void eat() { 
 int a = 10;//局部变量 
 System.out.println("eat()!"); 
 } 
 //实例成员函数 
 public void sleep() { 
 System.out.println("sleep()!"); 
 } 
 //静态成员函数
 public static void staticTest(){ 
 //不能访问非静态成员
 //sex = "man"; error 
 System.out.println("StaticTest()"); 
 } 
} 
public class Main{ 
 public static void main(String[] args) { 
 //产生对象 实例化对象
 Person person = new Person();//person为对象的引用
 System.out.println(person.age);//默认值为0 
 System.out.println(person.name);//默认值为null 
 //System.out.println(person.count);//会有警告! 
 //正确访问方式:
 System.out.println(Person.count); 
 System.out.println(Person.COUNT); 
 Person.staticTest(); 
 //总结:所有被static所修饰的方法或者属性,全部不依赖于对象。
 person.eat(); 
 person.sleep(); 
 } 
} 
输出结果为:
0 
null 
0 
99 
StaticTest() 
eat()! 
sleep()! 

静态方法内部不能使用this;
this是当前对象的引用;


4.构造方法

this.成员变量;
this.成员方法;
this.()调用构造方法 必须放到第一行 ;
并且只能调用一个构造方法;


class Person { 
 
 private String name;//实例成员变量
 private int age; 
 private String sex; 
 //默认构造函数 构造对象 
 public Person() { 
 this.name = "caocao"; 
 this.age = 10; 
 this.sex = "男"; 
 } 
 //带有3个参数的构造函数
 public Person(String name,int age,String sex) { 
 this.name = name; 
 this.age = age; 
 this.sex = sex; 
 } 
 public void show(){ 
 System.out.println("name: "+name+" age: "+age+" sex: "+sex); 
 } 
 
} 
public class Main{ 
 public static void main(String[] args) { 
 Person p1 = new Person();//调用不带参数的构造函数 如果程序没有提供会调用不带参数的构造函数
 p1.show(); 
 Person p2 = new Person("zhangfei",80,"男");//调用带有3个参数的构造函数
 p2.show(); 
 } 
} 
// 执行结果
name: caocao age: 10 sex: 男
name: zhangfei age: 80 sex: 

5.代码块


class Person{ 
 
 private String name;//实例成员变量
 private int age; 
 private String sex; 
 private static int count = 0;//静态成员变量 由类共享数据 方法区
 
 public Person(){ 
 System.out.println("I am Person init()!"); 
 } 
 
 //实例代码块
 { 
 this.name = "bit"; 
 this.age = 12; 
 this.sex = "man"; 
 System.out.println("I am instance init()!"); 
 } 
 
 //静态代码块
 static { 
比特科技 count = 10;//只能访问静态数据成员 
 System.out.println("I am static init()!"); 
 } 
 
 public void show(){ 
 System.out.println("name: "+name+" age: "+age+" sex: "+sex); 
 } 
 
} 
public class Main { 
 public static void main(String[] args) { 
 Person p1 = new Person(); 
 Person p2 = new Person();//静态代码块是否还会被执行?
 } 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值