3.16 类~~~~~~~~
java面向对象编程(一)
类与对象,构造方法
一个全面的类定义比较复杂
package 包名;
class 类名 extends 父类 implements
接口名{
成员变量;
构造方法;
成员方法;
}
- 类名的首字母大写
一般创建对象:类名 对象名 = new 类名();
类的成员方法(成员函数)定义
- 方法名的首字母是小写的
- 如何定名字1.驼峰法(匈牙利法)myCry 2.下划线法my_cry
public 返回数据类型 方法名(参数列表)
{
语句;//方法(函数)主体
}
构造方法:
提出:在创建对象的时候直接指定属性
构造方法是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。它有几个特点:
- 构造方法名和类名相同
- 构造方法没有返回值
- 主要作用是完成对新对象的初始化
- 在创建一个类的新对象时,系统会自动的调用该类的构造方法完成新对象的初始化
- 一个类可以定义多个不同的构造方法
- 每个类都有一个默认的构造方法
代码合集:
/*
作者:陈晓宇
日期:2012.3.16
功能:完成找小猫的问题
*/
class Cat
{
//下面的就是类的成员变量(属性)
int age;
String name;
String colour;
}
class Person
{
int age;
String name;
//构造方法
public Person(int age,String name)
{
System.out.println("我是构造1");
age=age;
name=name;
}
public Person(String name)
{
System.out.println("我是构造2");
name =name;
}
//行为
public void speak()
{
System.out.println("I'm a good guy");
}
public void jiSuan()
{
int result=0;
for(int i=1;i<=1000;i++)
{
result+=i;
}
System.out.println("result="+result);
}
public void jiSuan(int n)
{
int result=0;
for(int i=1;i<=n;i++)
{
result+=i;
}
System.out.println("result="+result);
}
public void chengfa(int n)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println();
}
}
}
public class Demo4
{
public static void main(String []args)
{
/*int cat1Age=3;
String cat1Name="小白";
String cat1Color="白色";
int cat2Age=100;
String cat2Name="小花";
String cat2Color="花色";
*/
//创建一个猫对象
Cat cat1=new Cat();
//访问属性的 对象名.属性名
cat1.age=3;
cat1.name="小白";
cat1.colour="白色";
Cat cat2=new Cat();
cat2.age=100;
cat2.name="小花";
cat2.colour="花色";
Person p1 = new Person(25,"chenxiaoyu");
Person p2 = new Person("haha");
p1.speak();
//p1.jiSuan();
//p1.jiSuan(10);
//p1.chengfa(10);
}
}
java面向对象编程(二)
目标:
- 初步理解什么是this代词
- 什么是类变量和类方法
- 初步理解抽象、封装和继承,多态
//功能:this的必要性
public class Demo3
{
public static void main(String []args)
{
Dog dog1=new Dog(2,"大黄");
Person p1 = new Person(dog1,23,"郭德纲");
Person p2 = new Person(dog1,24,"刘谦");
p1.showInfo();
p2.showInfo();
}
}
class Dog
{
int age;
String name;
public Dog(int age,String name)
{
this.age=age;
this.name=name;
}
//显示狗名
public void showInfo()
{
System.out.println("狗名是:"+this.name);
}
}
class Person
{
int age;
String name;
Dog dog;//引用类型
public Person(Dog dog,int age,String name)
{
//可读性不好
this.age = age;
this.name = name;
this.dog = dog;
}
public void showInfo()
{
System.out.println("人名是:"+this.name);
this.dog.showInfo();
}
}
- this不能再类定义的外部使用,只能在类定义的方法中使用
类变量(静态变量 )
提出问题:有一群小孩在玩游戏,不断有新小孩加入游戏,怎样统计小孩的人数? pl~~~
//功能:this的必要性
public class Demo3
{
public static void main(String []args)
{
Child ch1 = new Child(3,"妞妞");
ch1.joinGame();
Child ch2 = new Child(4,"阿迪飞");
ch2.joinGame();
System.out.println("共有:"+Child.total);
System.out.println("共有:"+ch1.total);
System.out.println("共有:"+ch2.total);
}
}
class Child
{
int age;
String name;
//静态变量,可以被任何一个对象访问
static int total=0;
public Child(int age,String name)
{
this.age=age;
this.name=name;
}
public void joinGame()
{
total++;
System.out.println("有一个小孩加入游戏");
}
}
- 什么是类变量?
类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。
- 如何定义类变量?
定义语法:
访问修饰符 static 数据类型 变量名;
- 如何访问类变量?
类名.类变量名 或者 对象名.类变量名
public class Demo3
{
static int i=1;
static
{
//该静态区域块只被执行一次
//即使不创建对象 也会被执行!!
System.out.println("a");
i++;
}
public Demo3()
{
System.out.println("b");
i++;
}
public static void main(String []args)
{
Demo3 t1=new Demo3();
System.out.println(t1.i);//3
Demo3 t2=new Demo3();
System.out.println(t2.i);//4
}
}
类方法:
public class Demo3
{
public static void main(String []args)
{
Stu stu1 = new Stu(29,"aa",340);
Stu stu2 = new Stu(25,"bb",530);
System.out.println(Stu.getTotalFee());
}
}
class Stu
{
int age;
String name;
int fee;
static int totalFee;
public Stu(int age,String name,int fee)
{
this.age=age;
this.name=name;
totalFee+=fee;
}
//返回总学费 类方法(静态方法)
//java中规则:类变量原则上用类方法去访问和操作
public static int getTotalFee()
{
//age++;//错误
return totalFee;
}
}
- 类变量与实例变量区别:
- 加上static成为类变量或者静态变量,否则称为实例变量
- 类变量是与类相关的,公共的属性;实例变量时属于每个对象个体的属性;
- 类变量可以通过类名.类变量名直接访问(不能是private)
- 类方法小节
- 类方法属于与类相关的,公共的方法
- 实例方法属于每个对象个体的方法
- 类方法可以通过类名.类方法名直接访问