package day03;
/*
面向过程:
最小的处理单位是函数。把大的问题分解成小问题,每个问题一个函数来实现。
把大象装入冰箱:
1、打开冰箱门
2、把大象装入冰箱
3、关上冰箱门
面向对象:
最小的处理单位是类。把大象装入冰箱,这个过程中有哪些事物,每个事物的
行为。
1、冰箱:开门,关门
2、大象:进入(冰箱)
3、人:打开(冰箱)、操作(大象)、关闭(冰箱)
属性:成员变量
行为:方法
*/
public class Demo01 {
public static void main(String[] args) {
Student zhangSan = new Student();
zhangSan.name = "张三"; //调用的属性,设置或者获取属性的值
zhangSan.age =18;
zhangSan.gender='男';
zhangSan.height = 170;
zhangSan.weight = 65;
zhangSan.sleeping();//调用无参的方法
zhangSan.learning("图书馆","三国演义"); //调用有参的方法
zhangSan.info();
int a = zhangSan.getAge(); //有返回值的方法,用变量接收这个值。
System.out.println("年龄:"+a);
float d = zhangSan.getHeight();
System.out.println("身高:"+d);
Student liSi = new Student();
liSi.name = "李四";
liSi.age = 20;
liSi.gender='女';
liSi.height=190.5f;
liSi.weight=55;
liSi.learning("宿舍","Java"); //没有返回值的方法,默认返回是null
liSi.info();
int aa = liSi.getAge(); //有返回值的方法,用变量接收这个值。
System.out.println("年龄:"+aa);
float c = liSi.getHeight();
System.out.println("身高:"+c);
}
}
//类型:相同特征的一个群体。
class Student{ //首字母大写
//成员变量(python 是在__init__方法中定义的)
//成员变量:在类中定义的变量,属于实例,通过new创建实例的时候,这些属
性就创建了。实例销毁时,这些属性才会释放。
//堆内存。(更新慢) public/private/static/final可以用来修饰成员变量
//局部变量:在方法中定义的变量,或者方法的参数。调用方法的时候,才会
创建局部变量,方法调用完释放。
//栈内存。(更新快)final可以用来修饰局部变量
//成员变量和局部变量名字可以一样,成员变量加this来标识。
String name;
char gender;
int age;
float height;
float weight;
public void setName (String name){
//成员变量和局部变量名字可以一样,成员变量加this来标识。
//=后面的name是局部变量
this.name = name;
}
public void info(){
System.out.println("姓名:" + name +",性别:"+gender+",年龄:" +
age +",身高:"+ height+",体重:"+weight);
}
//void 表示没有返回值
//public表示公共的
//()里面没有内容,表示没有参数
public void sleeping(){
System.out.println(name + "正在睡觉");
}
//方法带了两个String类型的参数,一个表示地点,一个表示书
public void learning(String place,String book){
System.out.println(name + "在" +place + "看" + book);
}
//方法声明返回一个int类型的值,方法体中用return返回对应类型的值。
public int getAge(){
return age;
}
public float getHeight(){
return height;
}
}
package day03;
import java.util.Arrays;
/*
*/
public class Demo06 {
public static void main(String[] args) {
//新建3个学生,把学生加入数组
Students s1 = new Students("lily",80);
Students s2 = new Students("lucy",90);
Students s3 = new Students("Tony",98);
Students[] ss = {s1,s2,s3};
System.out.println(Arrays.toString(ss));
Students s4 = new Students("jack",50);
System.out.println(s4);
modifyScore(s4);
System.out.println(s4);
}
//修改学生的分数,如果小于60,将分数提高为60.
public static void modifyScore(Students stu){
if(stu.score<60){
stu.score = 60;
}
}
}
class Students{
String name;
float score;
public Students(String name, float score) {
this.name = name;
this.score = score;
}
@Override
public String toString() {
return "Students{" +
"name='" + name + '\'' +
", score=" + score +
'}';
}
}
package day03;
/*
构造方法:
1、与类名相同。没有返回值,不能有return语句。
2、类里面没有写构造方法,系统会默认提供一个无参的构造方法。
3、类里面有构造方法,这个默认的构造方法就不存在。
4、构造方法支持重载,创建实例时更灵活。
5、构造方法用IDE可以自动生成。
*/
public class Demo04 {
public static void main(String[] args) {
Pet pet = new Pet(); //调用构造方法Pet() 创造实例。
Pet1 p = new Pet1("旺财",5); //调用构造方法 Pet1()创建实例。
//p.name = "";
//p.age = 10;
//类里有toString方法,打印时强调toString方法:
//没有toString方法时,打印内存地址
System.out.println(p);
Pet1 p2 = new Pet1("加菲猫");
System.out.println(p2);
Pet1.Pet2 p21 = new Pet1.Pet2("小黑",5,20.0f,"狼狗","吃肉");
System.out.println(p21);
//创建一个实例,给每个属性赋值。
Pet1.Pet2 p22 = new Pet1.Pet2();
p22.name = "小白";
p22.age = 5;
p22.weight = 10.5f;
p22.aiHao = "篮球";
System.out.println(p22);
}
}
//
/*
宠物类
*/
class Pet{
}
class Pet1{
String name;
int age;
Pet1(String a,int b){ //构造方法,给属性赋值
name =a;
age = b;
}
Pet1(String a){
name = a;
}
@Override
public String toString() {
return "Pet1{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
static class Pet2{
String name;
int age;
float weight;
String pinZhong;
String aiHao;
//构造方法
public Pet2(String name, int age, float weight, String pizhong,
String aiHao) {
this.name = name;
this.age = age;
this.weight = weight;
this.pinZhong = pinZhong;
this.aiHao = aiHao;
}
public Pet2(){
}
@Override
public String toString() {
return "Pet2{" +
"name='" + name + '\'' +
", age=" + age +
", weight=" + weight +
", pinZhong='" + pinZhong + '\'' +
", aiHao='" + aiHao + '\'' +
'}';
}
}
}
|