类和对象

一、类和类的实例化

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

  • 模子---------》月饼

    类-----------》对象

  • 一个类产生多个对象;

  • 基本语法

// 创建类
 class <class_name>{
       field;//成员属性
       method;//成员方法 }
// 实例化对象
 <class_name> <对象名> = new <class_name>(); 
  • class为定义类的关键字,ClassName为类的名字,{}中为类的主体。
    类中的元素称为:成员属性。类中的函数称为:成员方法。
class Person {
    public int age;//成员属性  实例变量
    public String name;    
    public String sex;    
    public void eat() {//成员方法
           System.out.println("吃饭!");      
           }    
    public void sleep() {
           System.out.println("睡觉!");
                 } 
}
  • 用类类型创建对象的过程,称为类的实例化
class Person {
    public int age;//成员属性  实例变量    
    public String name;    
    public String sex; 比特科技
    public void eat() {//成员方法
           System.out.println("吃饭!");      
           }    
    public void sleep() {
           System.out.println("睡觉!");
                 } 
                 }
    public class Main{
           public static void main(String[] args) {
                   Person person = new Person();//通过new实例化对象
                   person.eat();//成员方法调用需要通过对象的引用调用
                   person.sleep();        //产生对象     实例化对象
                   Person person2 = new Person();        
                   Person person3 = new Person();
                       }
 }
**输出结果为:**
吃饭! 
睡觉!

  • 注意:
  1. new 关键字用于创建一个对象的实例.
  2. 使用 . 来访问对象中的属性和方法.
  3. 同一个类可以创建对个实例.
  • 字段 (field)
class Person {
    public String name;   // 字段    
    public int age;
     }

注意事项:

  1. 使用 . 访问对象的字段.

  2. “访问” 既包含读, 也包含写.

  3. 对于一个对象的字段如果没有显式设置初始值, 那么会被设置一个默认的初值.

  4. 成员变量:如果未赋值,那么他的默认值就是自己对应的”0“值

  • static 关键字
    a) 修饰属性,Java静态属性和类相关, 和具体的实例无关. 换句话说, 同一个类的不同实例共用同一个静态属性.
class TestDemo{
     public int a;     
     public static int count; 
     } 
 
public class Main{
       public static void main(String[] args) {
                TestDemo t1 = new TestDemo();         
                t1.a++;         
                TestDemo.count++;         
                System.out.println(t1.a);         
                System.out.println(TestDemo.count);         
                System.out.println("============");         
                TestDemo t2 = new TestDemo();         
                t2.a++;         
                TestDemo.count++;         
                System.out.println(t2.a);         
                System.out.println(TestDemo.count);
                     }
  } 
  输出结果为:
  1 
  1 
  ============ 
  1 
  2
//count被static所修饰,所有类共享。且不属于对象,访问方式为:类名 . 属性。 

**b) 修饰方法:**如果在任何方法上应用 static 关键字,此方法称为静态方法。

  1. 静态方法属于类,而不属于类的对象。
  2. 可以直接调用静态方法,而无需创建类的实例。
  3. 静态方法可以访问静态数据成员,并可以更改静态数据成员的值。
class TestDemo{
     public int a;     
     public static int count;          
     public static void change() {
              count = 100;         
              //a = 10; error  不可以访问非静态数据成员
                   } 
 } 
 
public class Main{
       public static void main(String[] args) {
                TestDemo.change()//无需创建实例对象 就可以调用         
                System.out.println(TestDemo.count);
                        } 
 } 
 输出结果:
  100 

注意:

  1. 所有被static所修饰的不管是方法,成员的调用或访问都只通过类名;
    也就是说:被static修饰就不依赖于对象存在;依赖于类,只有一份,存在于方法区;

  2. 在静态方法的内部不能访问非静态的数据成员;

private实现封装
被 private 修饰的成员变量或者成员方法, 不能被类的调用者使用.

class Person {
  private String name = "张三";     
  private int age = 18;          
  public void show() {
           System.out.println("我叫" + name + ", 今年" + age + "岁");     }
 } 
 
class Test {
     public static void main(String[] args) {
              Person person = new Person();         
              person.show();
                   }
 } 
 
// 执行结果 
我叫张三, 今年18

getter和setter方法

class Person {
    private String name;//实例成员变量  
    private  int age;    
    public void setName(String name){
             //name = name;//不能这样写 
  
  this.name = name;//this引用,表示调用该方法的对象
    }  
    public String getName(){
       return name;
         }    
    public void show(){
       System.out.println("name: "+name+" age: "+age);
         } 
  } 
public static void main(String[] args) {
     Person person = new Person();     
     person.setName("caocao");     
     String name = person.getName();     
     System.out.println(name);     
     person.show();
 } 
 
// 运行结果
caocao name: caocao age: 0 

构造方法

  • **语法规则:
    1.方法名称必须与类名称相同
    2.构造方法没有返回值类型声明
    3.每一个类中一定至少存在一个构造方法(没有明确定义,则系统自动生成一个无参构造)
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:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值