对象
在现实生活中,任何事物都可以称作对象,而对象又分为两个部分:静态和动态,也称之为属性
静态部分也就是不能动的,拿鸟举例,如:翅膀,名称,头,便是我们所说的静态部分
动态部分则是可以执行的动作,同样拿鸟举例,如:吃东西,飞行,
类
我们可以把类看成一个箱子,一种事物便是一类,如:鸟是鸟类,家禽是家禽类,人是人类。
一个事物不能是一类事物,如:一只鸟不能是鸟类
封装
把静态和动态放进类里面的这个动作就叫做封装,封装也是面向对象编程的核心思想,采用封装的思想保证了类内部数据的完整性
继承
类与类之间同样具有关系,这种关系被称为继承。
拿鸟举例:鸟类和大雁,鸟类里面包含大雁,大雁有的鸟类也有,而鸟类有的大雁不一定有,所有鸟类是大雁的父类,大雁是鸟类的子类
当我们已经创建了一个鸟类时,在想要创建一个大雁类时,我们可以直接将鸟类中有用的东西保留下来,如:翅膀,爪子。在添加一些大雁具有的独特属性和行为,这样就节省了定义鸟与大雁之间共有的属性和行为的时间,这就叫做继承,子类继承父类
多态
拿鸟举例:在鸟类里有不同种类的鸟如大雁,布谷鸟,麻雀,老鹰,这种就是多态
成员变量
对象中的静态属性也就是成员变量
例题6.1:
package liudanyuan;
public class lei6_1 {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
成员方法
对象中的动态属性也就是成员方法
权限修饰符
类修饰符分为三种:pubilc,private,protected
重点讲一下pubilc和private:
pubilc是共有的,你在里面写的所有东西其他的类都能用,不管这个类和你有没有关系,他都能用你写在里面的东西
private是私有的,不管你和我有没有关系,就算你和我有关系,你也不能用我写在里面的东西
protected则是你和我有关系那你就可以查看我写的东西,你和我没关系则不能查看
如果你想要在私有的里面的东西有两中方法:getter和setter,这两种getter是获取的意思,setter是设置的意思
局部变量
在成员方法中定义一个变量,这个变量就是局部变量
例题6.2:
package liudanyuan;
public class lei6_2 {
public static int[] exchange(int[] arr) {
int tmp = arr[0];
arr[0] = arr[1];
arr[1] = tmp;
return arr;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] = {17,29};
System.out.println("第一个值="+ arr[0]+",第二个值="+arr[1]);
arr = exchange(arr);
System.out.println("第一个值="+ arr[0]+",第二个值="+arr[1]);
}
}
this关键字
如图当你的name=name,根据就近原则,你只是把参数name赋值给了参数本身,成员变量的值并没有发生改变,这时加上一个this,如图:
使this.name代表的是代码中的成员变量了, 而第二个name指的是参数
类的构造方法
在类中,除了成员方法还有一个特殊类型的方法——构造方法
new便是构造方法,当你在代码中输入new电脑便会自动产生一个变量
例题6.3:
package liudanyuan;
public class lei6_3 {
int eggCount;
public lei6_3(int eggCount) {
this.eggCount = eggCount;
}
public lei6_3() {
this(1);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
lei6_3 cake1 = new lei6_3();
System.out.println("顾客不要求加蛋的数量,饼里会有"+cake1.eggCount+"个蛋。");
lei6_3 cake2 = new lei6_3(2);
System.out.println("顾客要求加两个蛋,饼里会有"+cake2.eggCount+"个蛋。");
}
}
静态变量和静态方法
static修饰的变量和方法称为静态变量和静态方法
例题6.4:
package liudanyuan;
public class lei6_4 {
static double PI = 3.1415; //在类中定义静态变量
public static void method() { //在类中定义静态方法
System.out.println("这是静态方法");
}
public static void main(String[]args) {
System.out.println(StaticDemo.PI); //调用静态变量
StaticDemo.method(); //调用静态方法
}
}
例题6.5:
package liudanyuan;
public class lei6_5 { //顾客类
static int count = 0; //静态,共享的属性:人数
String name; //名称属性
public lei6_5(String name) {
this.name = name; //记录名称
count++; //人数递增
}
public static void main(String[] args) {
// TODO Auto-generated method stub
lei6_5 c1 = new lei6_5("tom");
System.out.println("我是第"+lei6_5.count+"名顾客,我叫"+c1.name);
lei6_5 c2 = new lei6_5("张三");
System.out.println("我是第"+lei6_5.count+"名顾客,我叫"+c2.name);
lei6_5 c3 = new lei6_5("狗蛋儿");
System.out.println("我是第"+lei6_5.count+"名顾客,我叫"+c3.name);
}
}
类的主方法
例题6.6:
package liudanyuan;
public class lei6_6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i = 0;i<args.length;i++) {
System.out.println(args[i]);
}
}
}
对象
例题6.7:
package liudanyuan;
public class lei6_7 {
String name;
int age;
String sex;
public lei6_7(){
}
public lei6_7(String name,int age,String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public static void main(String[]args) {
lei6_7 p1 = new lei6_7("tom",23,"男");
lei6_7 p2 = new lei6_7("lily",19,"女");
}
}
例题6.8:
package liudanyuan;
public class lei6_8 {
String name;
String Color;
String vioce;
public lei6_8(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) {
lei6_8 d1 = new lei6_8("毛毛","白色","汪汪汪");
System.out.print(d1.name+"的颜色是"+d1.Color);
System.out.print(",叫起来的声音:");
d1.call();
lei6_8 d2 = new lei6_8("灰灰","灰色","嗷呜~");
System.out.print(d2.name+"的颜色是"+d2.Color);
System.out.print(",叫起来的声音:");
d2.call();
}
}