6.面向对象的基础

对象与类:
对象:用来描述客观事物的一个实体,由一组属性和方法构成
属性:对象具有的各种特征
每个对象的每个属性都拥有特定的值
例如:张杰和黎明的年龄,姓名都是不一样的
方法:对象执行的操作
类是对象的概括,是对象的分类
具有相同属性和方法的一组对象的集合
是概念模型,描述对象拥有的特征(属性)和(行为)方法
类与对象的关系:类是对象的描述,对象是类的个体;类是抽象的,对象是具体的;程序中的由类产生对象;面向对象一共有三个特征:封装,继承,多态。
面向对象的编程基本步骤:
定义类
构造对象
使用对象
格式
类 【访问控制符】 class类名{}
属性 【访问控制符】·数据类型 变量名;
方法 【访问控制符】 void|返回值类型 方法名
类的组成:
属性
方法
构造函数
实例1:
package com.jredu.ch07;
/**
* 创建的一个类:狗类
*
*/

public class Dog {
//属性
public String name;//名称
public int age;//年龄
public String color;//颜色
public String size;//大小
public char sex;//性别
//方法:此处方法的定义并没有static关键字,这是因为此时定义的方法将要由对象调
用,而不是像之前那样与煮饭啊刚发定义在一个类中且由主方法直接调用
public void say(){
System.out.println("开始叫:汪汪汪");
}
public void eat(){
System.out.println("开始吃饭");
}
public void sleep(){
System.out.println("开始睡觉");
}
public void run(){
System.out.println("开始跑");
}
public void pee(){
System.out.println("开始撒尿");
}
public static void main(String[] args){
//构造对象:
格式:类名 对象=new 类名();
构造对象的方法与数组创建的方法是一样的,因为两者都是引用数据类型,
引用数据类型的使用格式都可以用这种格式定义
Dog dog=new Dog();
//给对象赋值:对象.属性=
dog.name="二哈";
dog.age=1;
dog.color="黑白";
System.out.println(dog.name);
//调用方法:对象.方法()
dog.eat();
dog.say();
}
}
结果:
实例2:
package com.jredu.ch07;

public class Human1 {
public String name;//姓名
public int age;//年龄
public char sex;//性别
public double height;//身高
public double weight;//体重
//构造函数:有参构造函数,无参构造函数(没有代码执行可以不写)
格式: public 类名(参数列表){}
特点:与类名同名,没有返回值
功能:初始化,在创建对象时可以预先给属性赋值
默认情况下是省略的
构造函数是隐含的

//有参构造函数
public Human1(String name, int age, char sex) {
super();
//this关键字:this指代将来本类的对象(类中声明的变量,即全局变量)
this如果不加的话,两个name指向的都是最近的出现的声明的name
this.name = name;
this.age = age;
this.sex = sex;
}
(
//无参构造函数
public Huluwa1(){
}
)
public void show() {
System.out.println("大家好");
System.out.println("我叫"+name+",今年"+age);
System.out.println("我是一个身高"+height+",体重"+weight+"的"+sex+"人");
}
public void work(String content) {
System.out.println(name+"的工作理念是"+content);
}
public static void main(String[] args) {
//有参构造函数在创建对象时就直接给对象赋值
Human1 h1=new Human1("阿宝", 25, '男');
h1.height=170.0;
h1.weight=120.0;
h1.show();
System.out.println("=========================");
Human1 h2=new Human1("美美", 21, '女');
h2.height=165.0;
h2.weight=100.0;
h2.show();
h2.work("工作是为了更好的生活");
}
}
结果:
实例3:
package com.jredu.ch07;
import java.util.Scanner;
public class Tourist {
public String name;//姓名
public int age;//年龄
public Tourist(String name, int age) {
super();
this.name = name;
this.age = age;
}
public void show() {
System.out.print(name+"的年龄为"+age);
if(age>6) {
System.out.print(",门票价格是:20元\n");
} else {
System.out.print(",门票免费\n");
}
}
public static void main(String[] args) {
//循环输入信息
Scanner sc=new Scanner(System.in);
while (true) {
System.out.print("请输入姓名");
String name=sc.next();
if(name.equals("n")) {
System.out.println("退出程序");
return;
} else {
System.out.print("请输入年龄");
int age=sc.nextInt();
Tourist t=new Tourist(name, age);
t.show();
}
}
}
}
结果:

实例4:
某班实施测试,测试科目为java ,学生有姓名和成绩信息,成绩有科目和分数信息。学生类的 getResult 方法显示输出成绩信息, setData 方法实现初始化学生信息。编写学生类和成绩类并测试
package com.jredu.ch07;
/**
* 成绩
* @author Administrator
*
*/
public class Score {
public String name;//科目
public int score;//分数信息
public Score(String name, int score) {
super();
this.name = name;
this.score = score;
}

}

package com.jredu.ch07;
public class Stu {
public String name;//学生姓名
public Score score;// 调用前面Score类,调出成绩中的科目和成绩信息
public void setData(String name,Score score) {
this.name=name;
this.score=score;
}
public void getResult() {
System.out.println(name+"的成绩信息:"+score.name+","+score.score);
} //如果改成System.out.println(name+"的成绩信息:"+score);
结果如图:
public static void main(String[] args) {
Stu stu=new Stu();
stu.setData("小张", new Score("java", 60));//此行等价于以下代码:
stu.name="小张";
Score s=new Score("java",60);
stu.setData(stu.name, s);
stu.getResult();
}
}
结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值