Day5:Java面向对象编程技术——类与对象

在后面这几天主要对Java语言的面向对象编程技术进行学习,包括对Java类,对象,接口,包的等重要概念及其应用。Java编程的主要任务是定义Java类和创建对象。

类的概念与定义

类是具有相同属性和服务的一组对象的集合。
类:类是一个模板,它描述一类对象的行为和状态。
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状 态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
类的定义:

class 类名
{
  成员变量;//有什么特征及属性
  成员方法;//做些什么
}

实例:

class EmpInfo
{
//成员变量
String name;
String designation;
String department;
//成员方法
void print(){
System.out.println(name+"is"+designation+"at"+department);
}
}

2.类的声明
类在使用前,必须先声明,然后才可以声明变量,创建对象。
类的声明语法如下:

[标识符] class 类名[extends 父类名] [implements 类所实现的接口列表]{
    //类的属性
    //类的方法
}

标识符public,abstract,final说明了类的属性。
public:表明这个类可以在其他任何类中使用。
abstract:表明这个类是抽象类,不能被实例化。
final:表明这个类不能被继承,既没有子类。

实例:

public class Person {
    //类的成员变量可以先声明,不用初始化,类成员变量是有默认值
    public String name;			//姓名,String的默认值是null
    private int age;			//年龄,int的默认值是0
    public static String sex = "男";		//静态类变量-后面详解

    /**
     *行为,方法,也叫函数
     *方法的名称如果是多个单词,首个的单词的首字母小写,其他的单词首字母大写,这样就像一个驼峰一样,所	   *以叫驼峰命名法
     */
    public void showName(){	
        System.out.println("姓名:" + name);
        getAge();				//同一个类中,所有的方法可以直接互相调用,不用new去实例化对象
    }

    //有返回值的函数
    public int getAge(){		
        return age;
    }
}
public class People {
    public static void main(String[] args){
        //实例化Person类,也就是创建Person对象
        Person person = new Person();
        //声明一个Person类型的变量,变量名person,实例化Person类并且给person赋值,赋值的值就是当前的实例
        person.name = "张三";					//给person对象的name属性赋值
        person.showName();						//对象的方法的调用
        int i = person.getAge();
        System.out.println(i);
        person.age = 11;						//给person对象的age属性赋值
        int a = person.getAge();
        System.out.println(a);
    }
}
//注:如果创建了一个类的多个对象,对于类中定义的属性,每个对象都拥有各自的一套副本,且互不干扰.

如何编写类?

在Java中,类就是对现实生活中的类的描述,描述生活中类其实就是描述这一类事物的属性和行为,根据类的定义,我们可以定义一个人类,人类就具备了一定的外在的表现形式(属性)和内在的功能(行为):

外在的表现形式(属性):姓名、性别、身高、体重、籍贯等;通过成员变量来实现
内在的功能(行为):吃饭、睡觉、打豆豆、买烟等;通过方法来实现的

注意:刚开始接触面向对象,成员变量和方法都是非static静态修饰的,后面的内容会单独讲解static静态用法

public class Person{
	/*外在的表现形式字段属性*/
	String name="张三";
	char gender='男';
	int age=18;
	/*内在的功能方法*/
	public void eat(){
        System.out.println("吃饭了");
	}
	public void sleep(){
        System.out.println("睡觉了");
	}
}

ii.如何编写对象?

在Java中通过new关键词来产生当前类的一个具体的实例、对象

public class PersonTest{
	public static void main(String[] args){
	//1:创建一个Person对象
	Person zs=new Person();
	zs.eat();
	System.out.println(zs.name);
    }
}

注意事项: 类是一个引用类型,我们定义的所有的类都是一个自定义的数据类型,这些数据类型都是引用类型。
凡是引用类型在创建对象时必须通过使用关键词来创建。

创建方式:

类型名称 变量名=new 类型名称();

使用对象属性:对象名.成员变量
使用对象方法:对象名.方法名
同一个类的每一个对象有不同的成员变量的存储空间
同一个类的每个对象共享该类的方法

iii.对象和类的内存分析

案例分析如下:

public class Dog{
	/*成员变量对象中抽取出来外部的表现形式(属性)*/
	String color;
	int age;
	String nickName;
	/*成员方法对象中抽取出来内部的功能(行为)*/
	public void eat(){
		System.out.println("小狗在吃饭");
	}
	public void shout(){
		System.out.println("小狗在叫");
	}
}
public class DogTest{
	public static void main(String[] args){
	//创建一个Dog对象
	Dog d=new Dog();
	//调用对象的功能
	d.eat();//对象.可以翻译为的,就是d对象的eat方法
	int age=d.age;
	System.out.println(age);
	}
}
public claas Demo01{
    //成员变量
    String name;
    int age;
    //成员方法
    public void point(String place){
        System.out.println("我在"+place+"睡觉");
    }
}
public class DemoTest01{
    public static void main(String[] args){
        //创建一个a对象
        Demo01 a=new Demo01();
        //调用对象的属性并重新赋值
        a.name="张山";
        a.age=14;
        //调动对象的方法并传入值
        a.point("沙发");
         //创建一个b对象
        Demo01 b=new Demo01();
        //调用对象的属性并重新赋值
        b.name="李四";
        b.age=15;
        //调动对象的方法并传入值
        b.point("床上");
        System.out.println(a.name);//结果:张山
        System.out.println(a.age);//结果:14
        System.out.println(b.name);//结果:李四
        System.out.println(b.age);//结果:15
    }
}

实例:
创建一个对象

/**
 * 这是一个对象:人
 */
public class Person {
    // 对象的属性
    private String name;
    private int age;
    private char sex;
    // 对象的方法(功能)
        public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    void eat(){
        System.out.println("吃东西");
    }
    void run(){
        System.out.println("跑步");
    }
}

使用一个对象

public class TestPerson {
    public static void main(String[] args) {
        // 创建对象
        Person2 person2 = new Person2();
        // 调用对象给属性赋值
        person2.setName("jack");
        // 用对象调用方法
        person2.run();
    }
}

this关键字的使用

this关键字表示对象本身。
this关键字主要使用在下面三种情况:
1.解决局部变量与成员变量同名的问题;
2.解决方法参数与成员变量同名的问题;
3.用来调用该类的另一个构造方法。

特别注意:Java语言规定,this关键字只能用在非static方法(实例方法和构造方法中),不能用在static方法中。

一、局部变量与成员变量同名,此时局部变量会隐藏成员变量

public Employee(String name, int age, double salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

二、方法参数与成员变量同名

public void setName(String name) {
        this.name = name;
    }

三、用来调用该类的另一个构造方法

public Employee() {
        this("李明",25,3000);

    }

注意:前提条件是:在同一个类中一个构造方法调用另一个构造方法。  如果在构造方法中调用了另一个构造方法,则this语句必须是第一条语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值