面向对象概述
对象:
世间万物都是对象;
通常划分为两个部分:动态属性和静态属性
动态属性就是对象可执行的动作
静态属性就是不能动的部分,这个部分被称为属性,任何对象都会具备其自身属性
类
类,是同一类事物的统称
类实质上就是封装对象属性和行为的载体
类是对象的设计图
面向对象具有封装性,继承性和多态性的特点
封装
是面向对象编程的核心,将对象的属性和行为封装起来,载体是类。
封装保证了类内部数据结构的完整性,使用类的用户不能轻易的直接操作类的数据结构,只能执行类允许公开的数据,避免了外部操作对内部数据的影响,提高了系统的可维护性。
继承
继承性主要利用特定对象的共有属性,子类可以继承父类所有的属性,子类还可以衍生子类,但最末尾的类依然能继承父类所有的属性
父类和子类存在一种关系,一个类在继承中它即可以是其他类的父类,为其他类提供属性和行为,也可以是其他类的子类。例如:三角形是图形类的子类也是等边三角形的父类。
多态
其实就是父类对象应用于子类的特征就是多态,多态就是继承父类的所有但又会有不属于父类也不同于其他子类的属性就相当于它的个性。
在Java中,对象的·属性也称为成员变量,成员变量可以是任何类型,整个类中均是成员变量作用范围
1.为书添加书名属性
public class Book {//类
private String name;//String类型的成员变量
public String getName() {//name的Getter方法
return name;
}
public void setName(String name) {//name的Setter方法
this.name = name;//将参数值赋予类中的成员变量
}
}
成员方法
框住局部变量
极限修饰符
getter:拿取和setter:设置鸟类名字 方法(自动生成)
1.右键
2.点击蓝色选项
局部变量
点击蓝色选项
点击蓝色Generate,生成成功
2.交换两个变量的值
public class ChangeDemo {
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) {
int arr[]= {17,29};
System.out.println("第一个值="+arr[0]+",第二个值="+arr[1]);
arr=exchange(arr);
System.out.println("第一个值="+arr[0]+",第二个值="+arr[1]);
}
}
结果如下
局部变量的有限范围
可以将局部变量的有效范围为变量的作用域,局部变量的有效范围从该变量的声明到该变量的结束为止
this关键字
用于表示本类当前的对象
类的构造方法
3.“构造”鸡蛋灌饼
package a;
public class b {
int egg;//鸡蛋灌饼里蛋的个数
public b(int egg) {//参数为鸡蛋灌饼里蛋的个数的构造方法
this.egg=egg;//将参数依据egg的值赋给属性egg
}
public b() {//无参数构造方法默认给饼加一个蛋
this(1);//调用参数为鸡蛋灌饼里蛋的个数的构造方法,并设置鸡蛋灌饼里蛋的个数为1
}
public static void main(String[] args) {
// TODO Auto-generated method stub
b cake1=new b();
System.out.println("顾客不要求加蛋的数量,饼里会有"+cake1.egg+"蛋");
b cake2=new b(2);
System.out.println("顾客要求加2个蛋的数量,饼里会有"+cake2.egg+"蛋");
}
}
结果如下
静态变量和静态方法
public class Bird {
//静态属性————成员变量
private String name;// 名字
private String wing;// 翅膀
// getter 和 setter 方法
public String getName(){
return name;
}
public void setName(String name) {
this.name = name;
}
public String getwing(){
return wing;
}
public void setwing(String wing) {
this.wing = wing;
}
// 构造方法 调用后会产生一个对象
public Bird() {
}
public Bird(String name) {
this.name = name;
}
public Bird(String name, String wing) {
super();
this.name = name;
this.wing = wing;
}
//动态属性————成员方法
String eat(String food) {
return name + "在吃" + food;
}
String fly() {
return name + "在飞";
}
}
public class Birdtest {
public static void main(String[] args) {
// TODO Auto-generated method stub
// new 调用构造方法 产生一个对象
Bird bird1 = new Bird();
bird1.setName("布谷鸟");
String fly = bird1.fly();
System.out.print(fly);
Bird bird2 = new Bird("大雁");
String eat = bird2.eat("谷物");
System.out.print(eat);
}
}
4.创建并调用静态属性和静态变量
public class StaticDemo {
//静态变量
static double PI = 3.1415926;//在类中定义静态变量
//静态常量
static final int i =3; //在类中定义静态方法
//静态方法
static void method() {
System.out.print("静态方法");
}
//静态代码块
static
{
//1
//2
//3
}
public static void main(String[] arge) {
System.out.println(StaticDemo.PI);//
System.out.println(StaticDemo.i);
StaticDemo.method();
}
}
结果如下
5.统计顾客总人数
package b;
public class s {//类
static int i=0;//共享的属性,人数
String name;//名称属性
public s(String name ) {
this.name=name;//记录名称
i++;//人数递增
}
public static void main(String[] args) {
// TODO Auto-generated method stub
s c1=new s("tom");
System.out.println("我是第"+s.i+++"名顾客,我叫"+c1.name);
s c2=new s("张三");
System.out.println("我是第"+s.i+++"名顾客,我叫"+c2.name);
s c3=new s("狗蛋儿");
System.out.print("我是第"+s.i+++"名顾客,我叫"+c3.name);
}
}
结果如下
6.读取主方法的参数值
public class MainDemo {
public static void main(String[] args) {//定义主方法
// TODO Auto-generated method stub
for(int i = 0; i < args.length; i++) {//根据参数个数做循环操作
System.out.println(args[i]);//循环打印参数内容
}
}
}
结果如下
7.创建人类并创建其对象
package a;
public class b {
String name;
int age;
String sex;
public b() {
}
public b(String name,int age,String sex) {
this.name=name;
this.age=age;
this.sex=sex;
}
public static void main(String []args) {
b p1=new b("tom",23,"男");
b p2=new b("lily",19,"女");
}
}
8.描述狗的特征
package a;
public class b {
String name;//名字
String color;//颜色
String vioce;//叫声
public b(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) {
b d1=new b("毛毛","白色","汪汪汪");
System.out.print(d1.name+"的颜色是"+d1.color);//访问对象的属性
System.out.print("叫起来的声音:");
d1.call();//访问对象的行为
b d2=new b("灰灰","灰色","嗷呜~");
System.out.print(d2.name+"的颜色是"+d2.color);
System.out.print("叫起来的声音:");
d2.call();
}
}
结果如下