Ⅰ (1) 对面向对象编程思想的认识 (2) 类、对象的关系及实际中如何定义类、类的字段、类的属性、类的方法
面向对象编程,毫无疑问是围绕“对象”展开的。
一、计算机的一切,就像人的意识一样,是必须反映物质和物质世界的。而物质世界,具有如下特征:
1、物以类聚,鸟以群分。——类
2、人上一百,形形色(shai,三声)色,龙生九子,各有不同——继承
3、活着就是变脸,不同的场合有不同的面孔——多态性
4、知人知面不知心——封装
最后,客观世界有多复杂,面向对象编程就想要多复杂。
二、类就是祖宗父母,对象就是儿孙。关系就是被继承和继承的关系
1、分析模型:看要模拟的事物具有怎样的类别和属性,具有怎样的操作、行为,比如人,可以犯罪也可以做好事,犯罪和做好事都需要人的属性,必须有手有脚有头脑,有坏心肠或好心肠。
2、分析需求,看编程所需要你获得哪些信息。比如明明研究人奔跑的速度,你非看他平时的道德评价,那就不好了。
3、抽象提取,把你分析的结果进行整理,去掉不需要的,看那些是一类的,就定义一个类,具有哪些共同属性,就定义这些属性,看他们有什么方法,就定义方法。
4、实现这些类
Ⅱ 什么是类 什么是对象 类和对象的区别是什么 如何定义一个类、类
类的定义:
JAVA中的类是具备某些共同特征的实体的集合,它是一种抽象的概念;
2.用程序设计的语言来说,类是一种抽象的数据类型,它是对所具有相同特征实体的抽象;
3.所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,对象是一种具体的概念。
4.类是对象的集合,对象是类的实例;对象是通过new className产生的,用来调用类的方法;类的构造方法
对象的定义:
在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一。要理解什么是对象,需要跟类一起结合起来理解。下面这段话引自《Java编程思想》中的一段原话:
“按照通俗的说法,每个对象都是某个类(class)的一个实例(instance),这里,‘类’就是‘类型’的同义词。”
从这一句话就可以理解到对象的本质,简而在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一。要理解什么是对象,需要跟类一起结合起来理解。下面这段话引自《Java编程思想》中的一段原话:
“按照通俗的说法,每个对象都是某个类(class)的一个实例(instance),这里,‘类’就是‘类型’的同义词。”
从这一句话就可以理解到对象的本质,简而言之,它就是类的实例,比如所有的人统称为“人类”,这里的“人类”就是一个类(物种的一种类型),而具体到每个人,比如张三这个人,它就是对象,就是“人类”的实例。
类和对象区别:
1,类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。就好像“Person(人)”这个类,它虽然可以包含很多个体,但它本身不存在于现实世界上。
2,对象是类的一个具体。它是一个实实在在存在的东西。
3,类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间中。
4,对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随着它自己的行为而发生改变。
定义类、方法、属性:
如果是自己写,格式为:
public class 类名{ \class就是定义类的关键字,注意Java要求类名和文件名一致
变量类型 变量名=初始值;\定义类的属性
访问修饰符 [static] 方法返回值类型 方法名(参数1的类型 参数1,参数2的类型 参数2...){ \定义方法,如果是不需要实例化就能使用方法,就加[]里面的
}
}
创建类的对象:
类名 对象名=new 类名() \如果加了带参数的构造方法,()里面必须传入对应参数的类型
构造方法作用:
构造方法作用就是对类进行初始化。 如果你没有定议任何构造方法的形式,程式会为你取一个不带任何参数的构造函数,那么你产生类的对像时只能用不带参数的方法。
通过构造方法实例化对象的时候的特点:
如果不添加带参数的构造方法,那么默认只能使用无参数的构造方法,如果加了带参数的构造方法,而没有添加无参数的构造方法,则只能使用带参数的构造方法
能否使用==进行两个对象的比较?
这个答案是肯定的
Ⅲ 如何在Java类中定义类属性ID
类属性:又叫做静态属性,即被static修饰。
public class Student {
private String name;
private String studentNum;
private String gender;
private Integer age;
private static Integer id;
static{
getId();
}
public Student() {
}
public Student(String name, String studentNum, String gender, Integer age) {
this.name = name;
this.studentNum = studentNum;
this.gender = gender;
this.age = age;
}
public static Integer getId(){
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStudentNum() {
return studentNum;
}
public void setStudentNum(String studentNum) {
this.studentNum = studentNum;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", studentNum=" + studentNum + ", gender=" + gender + ", age=" + age + "]";
}
}
Ⅳ 如何使用自定义属性
使用属性可以在设计时对类、properties和方法添加说明,然后在运行时通过反射资讯来检查它们。本文为我们介绍了在开发应用时如何利用C#自定义属性。 本文可以从技术文章下载出获得,其中包含了一个使用定制属性的Visual Studio专案示例档。
属性类是设计时可应用于类、properties和方法的特殊文类。属性类提供描述元素某些方面属性的方式或决定依附于该元素的其他类的行为,进而在运行时可以访问和检验这些描述与行为。你可以将属性类看作为类成员添加特殊修改器的一种方式。 例如,如果你曾经写过Web服务,那肯定知道要使得方法在整个服务中是公开的,必须要使用WebMethod属性。这是一个演示属性应用的很好的例子,因为我们要用WebMethod属性扩展编程模型。C#中没有内建的方式来指定某个方法通过Web服务是可见的(因为内建有表明一个方法是私有的方式),因此需要添加WebMethod属性来满足这一需要。
设计自定义属性 设计自定义属性的过程十分简单,在设计属性前只需要考虑以下几个方面:使用属性的目的是什么? 属性可以以很多方式使用。你需要定义属性到底要完成什么功能并确保这些特定功能没有内建在.NET框架集中。使用.NET修改器要比使用属性好,因为这将简化同其他装配件的集成过程。
属性必须储存什么资讯? 属性是打算用来指示某个功能的简单标志吗?或者属性是否要储存资讯?一个属性可以拥有设计时赋予的一组资讯,并在运行时查看这些资讯。例如,看一下示例应用中的别名属性。属性应该驻留在哪个装配件中? 大多数情况下,可以将属性包含在使用该属性的装配件中。不过也有这样的例子,将属性驻留在公共的、羽量级的、共用装配件中会更好些。这种类型的配置允许客户使用属性时不必引用不需要的装配件。哪些装配件将会识别属性? 如果没有模组读取属性,那么它将一文不值。你很可能将读取属性的类放在属性驻留的同一个装配件中。然而,正像前面提到的,也有这样的例子,你想将读取属性的方法与属性自身分别放在不同的装配件中。
public string SSN{get { return _ssn; }
set { _ssn = value; }
} 作为更复杂一点的例子,假设我们将有一个属性称为“Alias”。该属性的任务是检查一个property可能拥有别名。这将允许将一个property值映射给另一个property即使批roperty的名字不匹配。这个属性接受一系列字串值作为映射名。(列表B) 列表B[Alias ("FirstName", "First")]
public string FName{get { return _fName; }
set { _fName = value; }
} 在这个例子中,property“FName”被映射到“FirstName”和“First”,请查看示例应用以更详细的瞭解这种应用。
public Alias(params string[] names){this.Names = names;}public string[] Names{get { return _names; }
set { _names = value; }}}正如你所看到的,这就是一个普通的类,唯一的例外就是继承自System.Attribute类。我们不需要作任何特别的事情使它成为一个类。我们只是简单的定义了一个需要使用的构造函数并创建了一个property和一个存储资料的私有成员。 列表D是个更简单的属性——“Hide”属性。这个属性不需要构造函数(使用默认的构建函数),也不储存资料。因为这个属性只是一个简单的标志类型的属性。 列表DClass Hide : System.Attribute{//This is a simple attribute, that only requires
// the default constructor.}从代码中读取属性 读取属性并检查其中的资料比使用属性或创建属性显着地更加复杂。读取属性要求开发人员要对如何使用一个物件的反射资讯有个基本瞭解。如果你不熟悉反射机制,可以阅读“应用反射”系列文章。 假设我们正在查看一个类,我们想知道该类的那个properties使用了Alias属性以及都有哪些别名。列表E实现了这个功能。 列表EPrivate Dictionary<string, string> GetAliasListing(Type destinationType){//Get all the properties that are in the
// destination type.
PropertyInfo[] destinationProperties = destinationType.GetProperties();
Dictionary<string, string> aliases = newDictionary<string, string>();
for each (PropertyInfo property in destinationProperties){//Get the alias attributes.
object[] aliasAttributes =
property. GetCustomAttributes( typeof(Alias), true);
//Loop through the alias attributes and
// add them to the dictionary.
foreach (object attribute in aliasAttributes)
foreach (string name in ((Alias)attribute).Names)
aliases.Add(name, property.Name);
//We also need to add the property name
// as an alias.
aliases.Add(property.Name, property.Name);}return aliases;}这段代码最重要的地方是对GetCustomAttributes的调用以及回圈遍历属性提取别名的地方。 GetCustomAttributes方法可以在我们从物件类型中提取的PropertyInfo类中找到。在上面的应用中,我们将要查询的属性类型作为参数传给GetCustomAttributes方法,同时还将“true”传递给该方法使得可以列出继承的属性。如何发现匹配的属性,GetCustomAttributes方法将返回一个物件阵列。还有另外一种超负荷方法可以列出property上的所有属性,而不管属性类型是什么。 一旦有了属性,我们需要检查它们并从中提取需要的资讯。这可以通过遍历由GetCustomAttributes方法得到的物件阵列并将每个物件映射成我们要查询的属性来完成。在完成映射后,我们就可以像访问任意其他类的properties一样来访问属性的properties。 正如我在前面所说,读取属性是最困难的部分。然而,一旦我们写后读取属性的代码后,将来回忆和实施起来就相当容易了。
应用示例 我强烈建议你下载本文包含的这个应用示例。这个应用示例在一个简单的Windows应用中实现了下面的属性,并演示了如何读取和使用它们。Alias——这同上面提到的Alias属性一样。当你需要将一种类型的物件翻译为另一种类型时,需要使用该属性。例如,如果你有一个Customer物件和一个Address物件,你可能需要将它们都翻译为一个合并的包含人名和位址的Person物件,当一个不能使用直接映射时,可以使用该属性。DisplayName——示例代码中包括检查一个类实例并将它的property名称与值输出到萤幕上的代码。这个属性可用于覆盖送到萤幕显示的property名称。例如,一个名为“FName”property可以使用DisplayName属性,因此它显示为“First Name”。Examine——这个属性使得示例应用中的PrintObject方法进入更深一层,并输出使用了Examine属性的property的值。例如,示例应用中的Customer物件将Examine属性应用到Address property。这将指示PrintObject方法输出address property中的所有资讯。Hide——这个属性指示PrintObject()方法不要将当前property输出到萤幕。该属性用在Customer物件的SSN property上。 示例应用中包含了实现和读取属性每一步的注释,仔细看一下,我敢保证你会发现一些在自己的应用中可以利用的功能。
Ⅳ C# 如何给自定义类的属性添加方法
你可以把返回类型“int”改成你自定义的一个类如:
public
B
A{get{};set
{};}
;
然后在B类内写方法
class
B
{void
a(){}};
然后这样调用:
AA
aa=new
AA();
B
b=new
B();
aa.A=b;//因为属性的返回类型是对象,所以把对象的地址赋给此属性就可以找到访问了
aa.A.a();就可以了;
Ⅵ python中如何定义类
一、类定义:
class <类名>:
<语句>
类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性
如果直接使用类名修改其属性,那么将直接影响到已经实例化的对象
类的私有属性:
__private_attrs两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问
在类内部的方法中使用时self.__private_attrs
类的方法
在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数
私有的类方法
__private_method两个下划线开头,声明该方法为私有方法,不能在类地外部调用
在类的内部调用slef.__private_methods
类的专有方法:
__init__构造函数,在生成对象时调用
__del__析构函数,释放对象时使用
__repr__打印,转换
__setitem__按照索引赋值
__getitem__按照索引获取值
__len__获得长度
__cmp__比较运算
__call__函数调用
__add__加运算
__sub__减运算
__mul__乘运算
__div__除运算
__mod__求余运算
__pow__称方
示例:
[python]view plain
#类定义
classpeople:
Ⅶ 在php中如何设置类的属性,如何调用类的方法
PHP访问类的属性、方法使用箭头语法(->)。这里我给你一个例子供你参考:
<?php
classMyClass{//定义MyClass类
public$name;//定义了一个公有属性
protected$_age;//定义了一个保护属性
private$_email;//定义了一个私有属性
publicfunctionmy_method(){//定义my_method方法
}
protectedfunction_my_method2(){//定义_my_method2方法
}
}
$obj=newMyClass;//实例化
$obj->name='noname';//设置name属性
$obj->_age=12;//这是错误的,不能设置保护属性
$obj->address='KingStreet.'//设置一个未声明的属性是允许的,效果和公有属性类似,但未赋值前不能使用。
$obj->my_method()//调用公有方法
$obj->_my_method2();//这是错误的,不能调用保护方法
你需要理解继承、公有、保护和私有的概念。
继承:子类继承父类的公有、保护属性和方法。
公有:类的实例可以访问的属性和方法。
保护:只能在类的内部及其子类内部访问的属性和方法。
私有:只能在类的内部访问的属性和方法。
这是个很基础的问题,建议你多看书。
Ⅷ java如何定义一个类,创建它的成员变量和方法
首先,对于java开发有一定的基础性了解,相关的环境都安装配置好。
类的创建,此处以记事本为例,当然有一定基础之后可以用于Eclipse等快速开发,
(1).新建记事本,例如:MyJava.txt 最终需要将其扩展名更改为:MyJava.java
打开新建好的MyJava.java, 然后书写public class MyJava{ },注意:如果跟文件名相同,需要用到public 进行修饰,否则 直接 class XXX{ }也可以。
public class MyJava{
//可以创建需要的变量或者常量,需要自行学习 java的基本类型,此处不一一列举
int a =1;
String s = "wang";
boolean b = true;
MyJava(){
System.out.print("与类名相同,且没有参数时此为构造函数");
}
public static void show(){
System.out.print("定义方法");
}
//主函数入口
public static void main(String[] args) {
//调用show方法
show();
}
}
cmd 编译运行 MyJava.java即可
Ⅸ java 怎么定义属性
在一个类里面啊,比如:
每个类的三个组成部分(属性,构造方法,普通方法)
//学生类
class
Student{
//这就是定义属性啊
private
int
age;
//年龄属性
private
String
name;
//姓名属性
//构造方法
Student(int
age,String
name){
this.age=age;
this.name=name;
}
//普通方法
public
int
getAge(){
return
this.age;
}
.............
}
Ⅹ JAVA的类中如何自定义属性
给你一个例子
class Example{
private int number1; //定义属性
public Example(){
//构造函数
}
}
java中不需要析构函数 他的内存交给虚拟机管理了