第六章 面向对象编程

对象是事物存在的实体,如人,书桌,计算机,高楼大厦等。万物皆可对象。
对象分静态和动态。
能去掉是动态,不能静态。
类就是对象的设计图。类就是同一类事物的统称,如果将现实世界中的一个事物抽象成对象,类就是这类对象的统称。
Java三大特性
面向对象编程设计的特征
有封装才有继承 ,有继承才有多态。
封装 多态 继承
继承:父类用的,子类都可以用
多态:将父类对象应用于子类的特征就是多态
封装:将对象的属性和行为封装起来,其载体就是类

 

成员变量

在Java中,对象的属性也称为成员变量,成员变量可以是任意类型,整个类中均是成员变量作用范围。

package 面向对象;

public class Book { //类

private String name; //String类型的成员变量

public String getName() { //name的Getter方法

return name;

}

public void setName(String name) { //name的Setter方法

this.name=name; //将参数值赋予类中的成员变量

}

}

 成员方法

在Java语言中,使用成员方法对应于类对象的行为。以Book类为例,它包含getName()和setName()俩个方法,这俩个成员方法分别为获取图书名称和设置图书名称的方法。定义成员方法的语法格式如下:

权限修饰符 返回值类型 方法名(参数类型 参数名){

.....                      //方法体

return 返回值;

}

权限修饰符

Java中的权限修饰符主要包括private,public和protected,这些修饰符控制着对类和类的成员变量以及成员方法的访问

 局部变量的有效范围
可以将局部变量的有效范围成为变量的作用域,局部变量的有效范围从该变量的声明开始到该变量的结束为止。

package 面向对象;

public class ChangeDemo {

public static int[]exchange(int[]arr){

int tmp=arr[0]; //创建局部变量tmp,保存数组第一个元素的值

arr[0]=arr[1]; //第二个元素值赋给第一个元素

arr[1]=tmp; //第二个元素值改为tmp

return arr;

}

public static void main(String[] args) {

// TODO 自动生成的方法存根

int arr[]= {17,29};

System.out.println("第一个值="+arr[0]+ "第二个值="+arr[1]);

arr=exchange(arr);

System.out.println("第一个值="+arr[0]+ "第二个值="+arr[1]);

}

}

this关键字
this关键字用于表示本类当前的对象,this只能在本类中使用。

 类的构造方法

在类中,除成员方法,还存在一种特殊类型的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。每当类实例化一个对象时,类都会自动调用构造方法。

构造方法的特点如下:

构造方法没有返回值。

构造方法的名称要与本类的名称相同。

构造方法的定义语法格式如下:

public Book(){

.....                  //构造方法体

}

public: 构造方法修饰符

Book:构造方法的名称

package 面向对象;

public class EggCake {

int EggCount; //鸡蛋灌饼里蛋的个数

public EggCake(int eggCount) { //参数为鸡蛋灌饼里蛋的个数的构造方法

this.EggCount=eggCount; //将参数eggCount的值付给属性eggCount

}

public EggCake() { //无参数构造方法,默认给饼加一个蛋

//调用参数为鸡蛋灌饼里蛋的个数的构造方法,并设置鸡蛋灌饼里蛋的个数为1

this(1);

}

public static void main(String[] args) {

// TODO 自动生成的方法存根

EggCake cake1=new EggCake();

System.out.println("顾客不要求加蛋的数量,饼里会有"+ cake1.EggCount + "个蛋");

EggCake cake2=new EggCake(2);

System.out.println("顾客要求加2个蛋的,饼里会有"+ cake2.EggCount + "个蛋");

}

}

静态变量和静态方法

在了解静态变量和静态方法之前,首先要了解static关键字,因为由static修饰的变量和方法被称为静态变量和静态方法。

被声明为static的变量和方法被称为静态成员。静态成员属于类所有,区别于个对象,可以在本类或其他类使用类名“,“运算符调用静态成员。语法如下

package 面向对象;

public class StaticDemo {

//静态成员变量

static double PI=3.1415; //在类中定义静态变量

//静态成员方法

public static void method() { //在类中定义静态方法

System.out.println("这是静态方法");

}

public static void main(String[] args) {

// TODO 自动生成的方法存根

System.out.println(StaticDemo.PI); //调用变量静态

StaticDemo.method(); //调用静态方法

}

}

例6.5 统计顾客总人数

package 面向对象;

public class Cust { //顾客类

static int count=0; //共享的属性:人数

String name; //名称属性

public Cust(String name) {

this.name=name; //记录名称

count++; //人数递增

}

public static void main(String[] args) {

// TODO 自动生成的方法存根

Cust c1=new Cust("tom");

System.out.println("我是第"+Cust.count+"z名顾客,我叫"+c1.name);

Cust c2=new Cust("张三");

System.out.println("我是第"+Cust.count+"名顾客,我叫"+c2.name);

Cust c3=new Cust("狗蛋儿");

System.out.println("我是第"+Cust.count+"名顾客,我叫"+c3.name);

}

}

使用static关键字要注意的几点:

在静态方法中不可以使用this关键字

在静态方法中不可以直接调用非静态方法

局部变量不可以使用static关键字声明

主方法必须用static声明

只有内部类可以使用static关键字声明

类的主方法

在主方法的定义中可以看到其具有以下特性

主方法是静态的,所有如要直接在主方法中调用其他方法,则该方法必须也是静态的。

主方法没有返回值

主方法的型参为数组。其中,arg[0]~args[n]分别代表程序的第一个参数到第n个参数,可以使用args.length获取参数的个数。

package 面向对象;

public class TestMain {

public static void main(String[] args) { //定义主方法

// TODO 自动生成的方法存根

for(int i=0;i<args.length;i++) { //根据参数个数做循环操作

System.out.println(args[i]); //循环打印参数内容

}

}

对象

Java是一门面向对象的程序设计语言,对象是由类实例化而来的,所有问题都通过对象来处理。对象可以通过操作类的属性和方法来解决相应的问题,所有了解对象的产生,操作和消亡是十分必要的。

对象可以认为是在一类事物中抽象出某一个特例,可以通过这个特例来处理这类事物出现的问题。 在Java语言中,通过new操作符来创建对象。每实例化一个对象就会 自动调用一次构造方法。实质上这个过程就是创建对象的过程。准确的说,可以在Java语言中使用new操作符调用构造方法创建对象。语法如下;

Test test=new Test();

Test test=new Test("a");

 

package 面向对象;

public class People {

//静态属性 成员变量

private String name; //姓名

private int age; //年龄

private String sex; //性别

private int height; //身高

private double weight; //体重

//对外提供getter和setter方法

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public int getHeight() {

return height;

}

public void setHeight(int height) {

this.height = height;

}

public double getWeight() {

return weight;

}

public void setWeight(double weight) {

this.weight = weight;

}

//成员方法

//写代码 方法名:code 传入参数:语音,返回参数:“某某某正在写xxx代码”

String code(String lan) {

return name+"正在写"+lan+"代码";

}

//做个人介绍 方法名:introduce 传入参数为空 返回参数:“某某某性别X,体重X,身高X

public String introduce() {

return name+"年龄"+age+",性别"+sex+"身高"+height+"体重"+weight;

}

//查询BMI指数 方法名:getBMI 传入参数为空 返回参数:BMI指数

// BMI指数=体重/(身高*身高)

public double getBMI () {

return weight/(height*height);

}

//构造方法 无参数

public People() {

}

//构造方法 传入参数: 姓名 年龄 性别

public People(String name, int age, String sex) {

super();

this.name = name;

this.age = age;

this.sex = sex;

}

//构造方法 传入参数:姓名 年龄 性别 身高 体重

public People(String name, int age, String sex, int height, double weight) {

super();

this.name = name;

this.age = age;

this.sex = sex;

this.height = height;

this.weight = weight;

}

}

访问对象的属性和行为

package 面向对象;

public class Dog {

String name;

String Color;

String vioce;

public Dog(String name,String color,String vioce) {

this.name=name;

this.Color=color;

this.vioce=vioce;

}

public void call() {

System.out.println(vioce);

}

public static void main(String[] args) {

// TODO 自动生成的方法存根

Dog d1=new Dog("毛毛","白色","汪汪汪");

System.out.print(d1.name+"的颜色是"+d1.Color);

System.out.print(",叫起来的声音");

d1.call();

Dog d2=new Dog("灰灰","灰色","嗷呜~");

System.out.print(d2.name+"的颜色是"+d2.Color);

System.out.print(",叫起来的声音");

d2.call();

}

}

对象的引用

在Java语言中,尽管一切都可以看作对象,但真正的操作标识符实质上是 一个引用。引用语法如下。

类名 对象的引用变量

例如,一个People类的引用可以使用以下代码

People  tom;

通常一个引用不一定需要有一个对象相关联。引用与对象相关联的语法如下:

People tom=new People();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值