对象
在现实生活中,任何事物都可以称作对象,而对象又分为两个部分:静态和动态,也称之为属性
静态部分也就是不能动的,拿鸟举例,如:翅膀,名称,头,便是我们所说的静态部分
动态部分则是可以执行的动作,同样拿鸟举例,如:吃东西,飞行,
类
我们可以把类看成一个箱子,一种事物便是一类,如:鸟是鸟类,家禽是家禽类,人是人类。
一个事物不能是一类事物,如:一只鸟不能是鸟类
封装
把静态和动态放进类里面的这个动作就叫做封装,封装也是面向对象编程的核心思想,采用封装的思想保证了类内部数据的完整性
继承
类与类之间同样具有关系,这种关系被称为关联。
拿鸟举例:鸟类和大雁,鸟类里面包含大雁,大雁有的鸟类也有,而鸟类有的大雁不一定有,所有鸟类是大雁的父类,大雁是鸟类的子类
当我们已经创建了一个鸟类时,在想要创建一个大雁类时,我们可以直接将鸟类中有用的东西保留下来,如:翅膀,爪子。在添加一些大雁具有的独特属性和行为,这样就节省了定义鸟与大雁之间共有的属性和行为的时间,这就叫做继承,子类继承父类
多态
拿鸟举例:在鸟类里有不同种类的鸟如大雁,布谷鸟,麻雀,老鹰,这种就是多态
成员变量
对象中的静态属性也就是成员变量
例题6.1:
package liudanyuan;
public class lei6_1 {
private String name; //String类型的成员变量
public String getName() {//name的getter方法
return name;
}
public void setName(String name) {//name的Setter方法
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];//创建局部变量tmp
arr[0] = arr[1];//第二个元素赋值给第一个元素
arr[1] = tmp;第二个元素值改为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;//将参数eggcount的值赋给eggcount
}
public lei6_3() {//无参数构造方法,默认给饼加个蛋
//调用参数为鸡蛋灌饼里面蛋的个数的构造方法,并设置鸡蛋灌饼里蛋的数量为1
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();
}
}