首页 / JAVA / JAVA(基础) 面向对象一
JAVA(基础) 面向对象一
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVA(基础) 面向对象一,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6611字,纯文字阅读大概需要10分钟。
内容图文
JAVA(基础) 面向对象一
前面我们学习的是面向过程,现在我们来学习面向对象。面向过程就好比一件事自己一步步去完成,而面向对象则是找人去完成这件事,具体这件事是怎样做的,我们不在乎,我们只在乎结果。面向对象依托于面向过程,方法内部的具体功能实现的过程就是面向过程。
类和对象的概念
面向对象的优点
面向对象可以将复杂的问题简单化;更加符合现实生活中人们的思维角度;象更加符合管理者的角度,面向过程更加偏向执行者的角度。
使用面向对象思维进行开发
面向对象中有类和对象的概念。先有模板再试实例;先有类再有对象,根据类构建对象。
类:根据一些事物,提取其共性,相当于 模板。
对象:对象是表示生活中的具体事例|实例。
类
自定义类:类的定义中最主要的是定义 属性 方法。
属性:可以说是事物的特点或特征 。定义在类中方法外
方法:也可以说是功能,是能做什么。 成员方法:不加static修饰的
class 类名{
//属性
修饰符 数据类型 变量名 = 赋值;
? //成员方法
? 修饰符 返回值类型 方法名(参数){
? 方法体;
? }
? }
创建一个电话类:
public class Phone01 {
//属性
//颜色,品牌,尺寸,价格
public String color;
public String brand;
//功能
//打电话
public void call(){
System.out.println("正在拨通电话.....");
}
对象
我们有了类,之后就可以根据类来创建具体的实例了,这就是对象。
引用数据类型的使用
上面创建的类也是一个引用数据类型,我们就简单了解下引用数据类型的使用步骤:
1>导包 1)同包下的类 2)java.lang 这两个可以不用导包
2>创建当前引用类型的引用 即创建对象,用new
? 引用数据类型 引用名 = new 引用数据类型();
3>使用
引用名.功能名字(实参);
引用名.属性名;
对象的使用
我们创建对象也是需要引用我们创建的类,使用方法是相同的。因为创建的类和对象是在同一个包下,因此我们不必导包。
可以直接使用new关键字来 创建对象。
之后使用就可以了 **引用名.功能名字(实参); **
? 引用名.属性名;
下面我们就对创建的手机类,创建一个对象(实例)。
public class PhoneTest02 {
public static void main(String[] args) {
//1.创建对象 手机对象
//new关键字是创建对象使用
Phone01 p = new Phone01();
//2.使用功能
p.call();
//3.使用属性
p.brand = "华为";
p.price = 7000;
System.out.println(p.brand);
System.out.println(p.price);
}
}
构造器
说到构造器,我们先来简单了解下new的作用机制
new关键字做的事情:
? 1.在堆中为对象开辟空间,成员变量会跟随对象进入到堆内存并附默认值
? 2.调用构造器为对象初始化信息
? 3.将地址返回给引用
构造器:构造函数,构造方法
构造器 必须跟随new关键字使用。我们从new的作用机制中也可以看出来,有一步是调用构造器初始化的,但有人可能会问了,我们也没有写构造器啊。这是因为在编译的时候自动生成了一个空的构造器。
作用:
只能new关键字才能创建对象,构造器只能为对象初始化信息(就是为对象的成员变量赋值) ,不能创建对象
定义:
? 修饰符 类名(){
? }
? 构造器不需要定义返回值和void
? 可以定义return,但是不需要return带出返回值
注意:构造器是一个特殊的方法,因此也具有重载的作用,我们可以定义多个构造器,参数列表不同,就可以构成重载,根据new对象后的()匹配参数列表。
class Dog{
public String name;
public int age;
public String type;
//空构造
public Dog(){
System.out.println("我是空构造...");
}
//带参构造
public Dog(String n){
System.out.println("我是带参构造...");
name = n;
}
//带参构造
public Dog(String n,int a,String t){
System.out.println("我是带3个参构造...");
name = n;
age = a;
type = t;
}
//看家
public void lookDoor(){
System.out.println(name+"正在看家...");
}
//测试 方法
public void Dog(){
System.out.println("hahaha,我是一个方法Dog");
}
}
public class ConstructorDemo {
public static void main(String[] args) {
//先 创建对象
Dog dog = new Dog();
//后初始化->为成员变量赋值
dog.name = "花卷";
dog.type = "二哈";
dog,age = 1;
dog.lookDoor();
//通过带参构造器,创建对象的同时为成员赋值(第一次赋值->初始化)
Dog dog2 = new Dog("多多",2,"中华田园犬");
dog2.name = "多多";
dog2.lookDoor();
//方法的调用方式
dog2.Dog();
}
}
this关键字
指代当前的new对象
1>在构造器的首行可以调用本类中的其他构造器
? this(实参);
? 一定要在构造器首行才行,避免相互调用。
2>区分同名变量
成员变量与局部变量同名,this. 调用成员,否则默认就近原则。
在构造器中this关键字指代当前调用成员方法的对象。
如果出现同名问题,指代成员的 this. 不能省略,如果没有同名,哪里有就找哪一个。
注意:this不能用在静态(static)方法中。
public Cat(){
System.out.println("空构造");
}
public Cat(String name){
this();
this.name = name;
System.out.println("1个参数构造");
}
public Cat(String name,String color,String type){
this.name = name;
this.color = color;
this.type = type;
System.out.println("3个参数构造");
}
//打印所有成员属性的值
public void info(){
String name = "局部变量name";
System.out.println(this.name+"-->"+this.color+"-->"+type);
}
static 关键字
static 是静态的----> 修饰变量,修饰方法,修饰块,修饰类
被static修饰的变量,称为 静态变量|类变量
被static修饰的方法,称为 静态方法|类方法
至于为什么称为类方法,类变量呢?
静态的内容是属于类的,可以直接跟随类名使用,可以跟随对象使用
成员的内容是属于对象的,是能跟随对象使用,现有对象才有成员
使用: 类名.静态变量名|静态方法名()
? 引用.静态变量名|静态方法名()
先静态后成员。先父类后子类
注意:静态的变量是独一份的,在第一次加载到内存后就初始化,多个对象共享的,在方法去的静态去中,因此静态是属于类的。而成员变量是有对象后之后才能使用的,所以说成员是属于对象的。
? 在静态的内容中,只能调用静态的内容,不能直接调用成员的内容;
? 在成员的内容中,可以直接使用静态的内容,也可以直接使用成员的内容。
? (因为成员是属于对象的,没有对象就无法使用成员的内容,而静态的内容时共享的,成员的内容也可以直接使用。)
public class StaticDemo {
//成员变量
int a = 1;
//静态变量
static int b = 10;
public static void main(String[] args) {
//本类中可以直接使用
System.out.println(b);
//类名.静态内容
System.out.println(StaticDemo.b);
//对象
StaticDemo demo = new StaticDemo();
//对象.静态内容
System.out.println(demo.b);
//成员变量只能通过对象调用
System.out.println(demo.a);
//静态变量自减
StaticDemo.b--;
System.out.println(StaticDemo.b);
System.out.println(demo.b);
demo.test();
int i = 1;
}
//成员方法:
public void test(){
this.b--;
this.a--;
}
}
block
block 块 :自成作用域{}
普通语句块|局部代码块{} : 定义在方法中 执行时机: 跟随所在方法调用
构造块{} : 类中方法外 执行时机: new 创建对象
静态块static{} : 类中方法外 执行时机: 类第一次加载
同步块(之后讲)
相同类型的 块 ,一般自上至下依次执行。
构造块代码在构造器代码之前执行。
执行顺序:静态块–>main–>构造块–>构造器
public class BlockDemo {
static int i = 10;
//构造器
public BlockDemo(){
System.out.println("我是构造器");
}
//构造块
{
System.out.println("我是构造块1...");
}
{
System.out.println("我是构造块2...");
}
{
System.out.println("我是构造块3...");
}
//静态块
static{
System.out.println("我是静态块1");
System.out.println(i);
}
static{
System.out.println("我是静态块2");
}
static{
System.out.println("我是静态块3");
}
public static void main(String[] args) {
System.out.println("main");
//局部变量
int i = 1;
//普通语句块
{
i = 5;
System.out.println("局部语句块");
System.out.println(i); //就近原则
}
System.out.println(i);
BlockDemo bd = new BlockDemo();
}
}
面向对象是会有些抽象,因此需要我们的多加练习,不要因为一时的不懂而放弃,之后学习加深后,会理解的更加透彻的。
内容总结
以上是互联网集市为您收集整理的JAVA(基础) 面向对象一全部内容,希望文章能够帮你解决JAVA(基础) 面向对象一所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。