Java面向对象编程-创新互联
1、什么是面向对象编程?
面向就是拿或找的意思
对象就是东西的意思
面向对象编程就是拿或找东西来编程
2、在Java中必须先创建类,才能获得对象
类:是对象共同特征的描述(设计图)
对象:是真实存在的实例
3、如何定义类?
public class 类名{
①成员变量(代表属性,一般是名词)
②成员方法(代表行为,一般是动词)
③构造块
④代码块
⑤内部块
}
例:
public class Car{
//属性(成员变量)
String name;
double price;
//行为(方法)
public void start(){
}
public void run(){
}
}
4、如何得到类的对象?
类名 对象名 = new 类名();
Car c = new Car();
5、使用对象
对象名.成员变量;
对象名.成员方法(...);
创建类
创新互联是一家集网站建设,酒泉企业网站建设,酒泉品牌网站建设,网站定制,酒泉网站建设报价,网络营销,网络优化,酒泉网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。//创建类
public class Car {
//属性(成员变量)
String name;
double price;
//行为(方法)
public void start(){
System.out.println(name+"开始启动!");
}
public void run(){
System.out.println(name+ "跑起来!");
}
}
使用自己设计的类
//使用自己设计的类
public class Test {
public static void main(String[] args) {
//类名 对象名 = new 类名();
Car c = new Car();
//使用对象
//对象名.成员变量;
//对象名.成员方法;
c.name = "奔驰";
c.price = 55.3;
System.out.println(c.name+"的价格是:"+c.price);
c.start();
c.run();
System.out.println("--------------------");
Car c1 = new Car();
c1.name = "比亚迪";
c1.price = 29.8;
System.out.println(c1.name+"的价格是:"+c1.price);
c1.start();
c1.run();
}
}
6、定义类有哪些建议,有什么需要注意的?
1、类名首字母建议大写、英文、有意义、满足驼峰模式、不能用关键字,满足标志符规定;
2、一个代码文件中可以定义多个类,但是只能有一个类是publi修饰的,
public修饰的类名必须是Java代码的文件名称;
7、成员变量的格式是什么样的,有什么特点?
1、成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值;
2、一般无需指定初始化值,存在默认值
对象内存图
1、对象放在哪个位置?
堆内存中
2、Car c = new Car(); c变量名中存储的是什么?
存储的是对象在堆内存中的地址
3、成员变量(name、price)的数据放在哪里,存在哪个位置?
放在对象中,存于堆内存中
两个变量指向同一对象
//创建类
public class Student {
//属性(成员变量)
String name;
char sex;
String hobby;
//行为(方法)
public void student() {
System.out.println("名字:" + name + ",性别:" + sex + ",爱好:" + hobby + "的学生开始学习了!");
}
}
//了解两个变量指向同一对象内存
public class Test {
public static void main(String[] args) {
Student s1 = new Student();
s1.name = "阿珍";
s1.sex = '女';
s1.hobby = "唱歌、跳舞";
s1.student();
System.out.println("-----------------");
//将s1的变量数据值给s2
Student s2 = s1;
s2.hobby = "刷题";
System.out.println(s1.hobby);//刷题
System.out.println(s2.name);//阿珍
System.out.println(s2.sex);//女
s2.student();
System.out.println("------------两个变量的地址-------------");
//s1、s2两个变量的地址指向同一地址
System.out.println(s1);
System.out.println(s2);
}
}
什么是垃圾回收?
1、注意:当堆内存中的类对象或数组对象,没有被任何变量引用(指向)时,
就会被判定为内存中的“垃圾”。
2、java存在自动垃圾回收器,会定期进行清理
构造器
1、学构造器的目的?
真正知道对象具体是通过调用什么代码完成的
能够掌握为对象属性赋值的其他写法
2、构造器的作用?
用于初始化一个类的对象,并返回对象的地址
3、构造器定义的格式
修饰符 类名(形参列表){
...
}
4、构造器的分类
1、无参数构造器(默认存在的):初始化对象时,成员变量的数据均采用默认值
2、有参数构造器:在初始化对象的时候,同时可以为对象进行赋值
public class Car{
...
//无参构造器
publicc Car(){
...
}
//有参构造器
publicc Car(String name,String price){
...
}
}
5、注意事项
1、任何类定义出来,默认就自带了无参数构造器,写不写都有
2、一旦定义了有参数构造器,默认的无参数构造器就没有了,
此时需要自己写一个无参数构造器
//构造类
public class Car {
String name;
double price;
//无参数构造器
public Car() {
System.out.println("无参数构造器被调用~~~");
}
//有参数构造器
public Car(String n, double p) {
System.out.println("有参数构造器被调用~~~");
name = n;
price = p;
}
}
//引用构造器
public class Test {
public static void main(String[] args) {
Car c1 = new Car();
System.out.println(c1.name);//null
System.out.println(c1.price);//0
Car c2 = new Car("宝马", 50.9);
System.out.println(c2.name);
System.out.println(c2.price);
}
}
this关键字的作用
出现在成员方法、构造器中代表当前对象的地址,用于访问当前对象成员的变量、成员方法
public class Car {
String name;
double price;
//this关键词当前对象的地址,在成员变量中的使用
public Car(String name, double price) {
name = name;//null
price = price;//0
this.name = name;
this.price = price;
}
//在成员方法中的使用
public void goWith(String name) {
//宝马正在和宝马比赛!
System.out.println(name + "正在和" + name + "比赛!");
//奔驰正在和宝马比赛!
System.out.println(this.name + "正在和" + name + "比赛!");
}
}
public class Test {
public static void main(String[] args) {
Car c = new Car("奔驰", 50.9);
System.out.println(c.name);
System.out.println(c.price);
c.goWith("宝马");
}
}
封装
面向对象的三大特征:封装、继承、多态
什么是封装?
隐藏实现细节,暴露出合适的访问方式(合理隐藏、合理暴露)
封装的实现步骤
1、一般对成员变量使用priva(私有)关键字修饰进行隐藏,
private修饰后该成员变量就只能在当前类中访问
2、提供public修饰的公开的getter、setter方法暴露其取值和赋值
封装的好处
1、加强了程序代码的安全性
2、适当的封装可以提升开发效率,同时可以让程序更容易理解与维护
public class Student {
private int age;
//赋值方法
public void setAge(int age) {
if (age >= 0 && age<= 200) {
this.age = age;
} else {
System.out.println("年龄非法!");
}
}
//取值方法
public int getAge() {
return age;
}
}
public class Test {
public static void main(String[] args) {
Student s = new Student();
s.setAge(20);
System.out.println(s.getAge());
}
}
JavaBean
可以理解成实体类,其对象可以用于在程序中封装数据
需要满足的要求
成员变量使用private修饰
提供每一个成员变量对应的setXxx()/getXxx()
必须提供一个无参构造器
public class User {
//1、成员变量私有
private String name;
private double height;
private double salary;
//3、必须有无参数构造器(不定义也行,有默认的,前提是没有有参构造器)
public User() {
}
//4、有参数构造器(不是必须的,可以选择)
public User(String name, double height, double salary) {
this.name = name;
this.height = height;
this.salary = salary;
}
//2、必须提供成套的getter()和setter()方法暴露成员变量
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
public class Test {
public static void main(String[] args) {
//1、调用无参数构造器创建对象
User u = new User();
u.setName("吴彦祖");
u.setHeight(180);
u.setSalary(5000);
System.out.println(u.getName());//吴彦祖
System.out.println(u.getHeight());//180
System.out.println(u.getSalary());//5000
//2、调用有参数构造器创建对象
User u1 = new User("关之琳", 168, 6000);
System.out.println(u1.getName());//关之琳
System.out.println(u1.getHeight());//168
System.out.println(u1.getSalary());//6000
}
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网页标题:Java面向对象编程-创新互联
浏览地址:http://pwwzsj.com/article/dcpphs.html