Java面向对象1

Java面向对象

对象

:一切客观存在的事物
对象的结构:对象由属性和方法组成
类:类是对大量共性的总结,是创建对象的模板 在java中,对象都是以类为基础而创建
类和对象的关系: 类是一个族群,对象是族群中的个体

类与方法代码的写法

package demo;
public class person {
    
    String name;
    int age;
    String sex;
    
    public void say() {
         System.out.println("大家好,我叫:"+name+",年龄:"+age+",性别:"+sex);
    }
}
package demo;
public class test {
    public static void main(String[] args) {
         //人类是我们自己定义的类型
         person a; //声明一个人
         a = new person();//创建一个对象
         a.name = "张十三";
         a.age = 23;
         a.sex = "女";
         a.say();
    }
}

方法的重载

同样的方法名字,返回值类型和参数列表不相同。

构造方法:用来构造对象的方法
Java语言通过类的构造方法创建对象,构造方法与普通方法的声明类似

package demo;
public class Person2 {
    String name;
    String sex;
    double weight;
    /**
     * 构造方法:用来创建对象的方法
     * 名字和类名相同,不写返回值类型
     * 构造方法只有在一种情况下被调用,那就是new
     * 当不写的时候,会自动带一个默认无参数构造
     * 当编写过有参数构造之后,默认无参就没有了
     */
    public Person2() {
         // TODO Auto-generated constructor stub
    }
    
    public Person2(String mingzi) {
         name = mingzi;
    }
}

Static关键字

什么是类成员:
使用static修饰的成员方法和成员变量称为类成员
使用static修饰的成员变量叫做类变量
使用static修饰的成员方法叫做类方法

什么是实例变量:
未使用static修饰的成员方法和成员变量称为实例成员
未使用static修饰的成员变量叫做实例变量
未使用static修饰的成员方法叫做实例方法

package Static_demo;
public class Person {
    //静态属性 所有对象共享,唯一的,从类的角度出发,是类的属性
    static int num = 3;
    final static String TITLE = "人族"; //final:不可修改
    //实例属性
    String name;
    int age;
    String sex;
    
    public static void main(String[] args) {
         
         //输出人的num
         System.out.println(Person.num);
         Person p1 = new Person();
         System.out.println(p1.num);
         
         Person p2 = new Person();
         p2.num = 22;
         System.out.println(p1.num);
         System.out.println(Person.TITLE);
    }
}

类方法与实例方法的区别

所有该类对象共享类方法和实例方法
类方法使用 类名.方法名([参数])调用
实例方法使用对象名.方法名([参数])调用

package Static_demo;
public class Person {
    //静态属性 所有对象共享,唯一的,从类的角度出发,是类的属性
    static int num = 3;
    final static String TITLE = "人族"; //final:不可修改
    //实例属性
    String name;
    int age;
    String sex;
    
    //实例方法
    public void say() {
         System.out.println("hello world");
    }
    
    //类方法:里面可以使用静态变量,也可以调用静态方法
    //但是不能使用实例属性或实例方法,因为还没有实例存在
    public static void eat() {
         System.out.println("吃吃吃");
    }
    
    public static void main(String[] args) {
         
         Person.eat();
         //输出人的num
         System.out.println(Person.num);
         Person p1 = new Person();
         System.out.println(p1.num);
         
         Person p2 = new Person();
         p2.num = 22;
         System.out.println(p1.num);
         System.out.println(Person.TITLE);
    }
}

static的其他使用

静态代码块:是一个以static为前导的代码块,一般用于为类的工作,做一些初始化工作,如初始化一些静态变量

package demo;
public class Testt {
    static String title = null;
    static int i = 0;
    /**
     * 静态代码段
     * 在类被加载的时候执行,只执行一次
     * new、调用、main写在类中都会导致类被加载
     */
    static {
         System.out.println("静态代码段被执行");
         title = "人族";
         i++;
    }
    
    public static void main(String[] args) {
         // TODO Auto-generated method stub
         System.out.println(Testt.title);
    }
}

封装的使用

加上private修饰符,加上get、set方法
get set快捷:Source->generate getters and setters

package fengzhuang;
public class Person {
    private String name = "无名";
    private String sex;
    private int age;
    
    public String getName() {
         if(Math.random()<0.8) {
             return this.name;
         }else {
             return "就不告诉你";
         }
    }
    
    public void setName(String name) {
         this.name = name;
    }
}


package fengzhuang;
public class Test {
    public static void main(String[] args) {
         // TODO Auto-generated method stub
         Person p = new Person();
         
         String n = p.getName();
         
         System.out.println(n);
    }
}

this关键字的使用

概念:this是一种特殊的引用,指向当前对象
使用方法:①如果发生局部变量与成员变量命名冲突时,可以通过this.成员变量名的方法区分实例变量和局部变量 ②一个构造方法中需要调用同一个类的另一种构造方法,可以通过this()的方式调用,但this()必须要书写在第一行

package fengzhuang;
public class Test {
    int i = 20;
    
    public Test() {
         System.out.println("这是无参构造方法");
    }
    
    public Test(int i) {
         this(); //通过this()调用无参构造方法
         this.i = 1;
    }
    
    public void test() {
         int i = 30;
         //局部变量与成员变量同名,那么成员变量被隐藏
         System.out.println(i);//30
         System.out.println(this.i);//20
         //通过this.成员变量名 访问被隐藏的成员变量
    }
    
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值